作者:
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;
}
};
```
媽的 有點醜