ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

552 学生出勤记录 II(递推-动态规划-枚举技巧,netty框架工作原理

2021-09-11 11:32:16  阅读:166  来源: 互联网

标签:netty int 字母 笔记 Kafka II 552 dp mod


    # 初始状态表示当前有0个字母, 0个A, 0个连续的字母L的方案数目为1

    dp[0][0][0] = 1

    mod = 10 ** 9 + 7

    for i in range(n):

        # 第二层表示字母A的数目

        for j in range(2):

            # 第三层表示连续字母L的数目

            for k in range(3):

                # 枚举的是下一个位置, 因为求解的是方案数目, 所以需要累加上当前状态的dp值

                # 判断下一个位置填字母A的情况

                if j == 0: dp[i + 1][j + 1][0] = (dp[i + 1][j + 1][0] + dp[i][j][k]) % mod

                # 判断下一个位置为L的字母的情况

                if k + 1 <= 2: dp[i + 1][j][k + 1] = (dp[i + 1][j][k + 1] + dp[i][j][k]) % mod

                # 下一个位置为字母P一定合法所以直接计算即可

                dp[i + 1][j][0] = (dp[i + 1][j][0] + dp[i][j][k]) % mod

    res = 0

    # 计算有n个字母所有的合法方案, 包含合法的字母A和字母L的情况

    for j in range(2):

        for k in range(3):

            res = (res + dp[n][j][k]) % mod

    return res



**java代码(232ms)**



public class Solution {

public int checkRecord(int n) {

    int dp[][][] = new int[n + 1][2][3];

    dp[0][0][0] = 1;

    int mod = 1000000007;

    for (int i = 0; i < n; ++i){

        for (int j = 0; j < 2; ++j){

            for (int k = 0; k < 3; ++k){

                if (j == 0){

                    dp[i + 1][j + 1][0] = (dp[i + 1][j + 1][0] + dp[i][j][k]) % mod;

                }

                if (k + 1 <= 2){

                    dp[i + 1][j][k + 1] = (dp[i + 1][j][k + 1] + dp[i][j][k]) % mod;

                }

                dp[i + 1][j][0] = (dp[i + 1][j][0] + dp[i][j][k]) % mod;

            }

        }

    }

    int res = 0;

    for (int j = 0; j < 2; ++j){

        for (int k = 0; k < 3; ++k){

            res = (res + dp[n][j][k]) % mod;

        }

    }

    return res;

}

}




  




# 总结

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

**[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】](

)**

**麻烦帮忙转发一下这篇文章+关注我**

![就这一次!拼多多内部架构师培训Kafka源码笔记(现已绝版)](https://www.icode9.com/i/ll/?i=img_convert/988f458b2ba06064badc785d1db7148c.png)

> **本文已被[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)收录**
31330508235)]

> **本文已被[CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://codechina.csdn.net/m0_60958482/java-p7)收录**

标签:netty,int,字母,笔记,Kafka,II,552,dp,mod
来源: https://blog.csdn.net/m0_60634964/article/details/120235158

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有