第三题使用DP过了 dp[i][j] 表示第 i 位以 j 结尾的方案数 cpp代码如下: #include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; const int MAXN = 1e5 + 50; int dp[MAXN][9]; int main(){ for(int i = 0; i < 9; i++) dp[0][i] = 1; for(int i = 1; i < 9; i++) dp[1][i] = 9; dp[1][0] = 8; for(int i = 2; i < MAXN; i++){ for(int j = 0; j < 9; j++){ int cur = j + 1; if(cur != 1){ int num = 0; for(int k = 0; k < 9; k++){ num = (num + dp[i - 1][k]) % MOD; } dp[i][j] = num; }else{ int num = 0; for(int k = 1; k < 9; k++){ num = (num + dp[i - 2][k]) % MOD; } int summ = 0; for(int k = 1; k < 9; k++) summ = (summ + num) % MOD; dp[i][j] = summ; } } } int summ = 0; int n = 0; cin >> n; for(int k = 0; k < 9; k++){ summ = (summ + dp[n - 1][k]) % MOD; } cout << summ << endl; return 0; }
3 3

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务