楼主:
oin1104 (是oin的说)
2024-05-26 13:19:50题目:
有三个英文字
A缺席
L迟到
P出席
一个学生不能缺席超过两次
不能连续迟到三天
其他都算出席
就可以拿出席奖励
问你学生的上学天数n里面有几种上学方法
可以拿到出席奖励
思路:
跟电话号码那种有点像
就是一直纪录后面的状态就好了
可以简化成阵列去做
```cpp
class Solution {
public:
int checkRecord(int n)
{
int res = 0;
vector<int> paper1(6,0);
vector<int> paper2(6,0);
paper1[0] = 1;
paper1[1] = 1;
paper1[3] = 1;
for(int i = 1 ; i < n ; i ++)
{
paper2[0] = (((paper1[0]%1000000007+paper1[1])%1000000007+paper1[2])
%1000000007)%1000000007;
paper2[1] = (paper1[0])%1000000007;
paper2[2] = (paper1[1])%1000000007;
paper2[3] = (((((((paper1[3]%1000000007)+paper1[0])%1000000007+paper
1[1])%1000000007+paper1[2])%1000000007+paper1[4])%1000000007+paper1[5])%10000000
07)%1000000007;
paper2[4] = (paper1[3])%1000000007;
paper2[5] = (paper1[4])%1000000007;
paper1 = paper2;
}
for(int i = 0 ; i < 6 ; i ++)
{
res += paper1[i]%1000000007;
res %= 1000000007;
}
return res;
}
};
```
妈的 有点丑