腾讯音乐906
第一题和第三题a了,第二题过了5%,想不出来有啥问题,有大佬帮忙瞅瞅咋回事吗?
public int kawaiiStrings(int n) {
if (n < 4) return 0;
// write code here
long[][] arr = new long[n + 1][3]; // arr[i] 表示 以 r e d 结尾的合法数量
long mod = 1000000007;
arr[4][0] = 0;
arr[4][1] = 0;
arr[4][2] = 3;
for (int i = 5; i < n + 1; i++) {
// i 为 r/e 时,i-1 可以为 r/e/d
arr[i][0] = arr[i - 1][0] + arr[i - 1][1] + arr[i - 1][2];
arr[i][1] = arr[i - 1][0] + arr[i - 1][1] + arr[i - 1][2];
// 此时 i 为 d,i-1 可以为 r/d;i-1 为 e 时,i-2 只能为 e/d
// arr[i-1][2] 以 dd 结尾
// arr[i-1][0] 以 rd 结尾
// arr[i-2][1] 以 eed 结尾
// arr[i-2][2] 以 ded 结尾
arr[i][2] = arr[i - 1][2] + arr[i - 1][0] + arr[i - 2][1] + arr[i - 2][2];
arr[i][0] %= mod;
arr[i][1] %= mod;
arr[i][2] %= mod;
}
long res = (arr[n][0] + arr[n][1] + arr[n][2]) % mod;
return (int) res;
}
#腾讯音乐笔试##悬赏#