洛谷3
简单dp
#include <bits/stdc++.h> using namespace std; int f[31][31]; int main(){ int n,m; cin>>n>>m; f[0][1] = 1; for (int i = 1; i <= m;i++){ for (int j = 1; j <= n;j++){ if(j==1) f[i][j] = f[i - 1][n] + f[i - 1][2]; else if(j==n) f[i][j] = f[i - 1][1] + f[i - 1][n - 1]; else f[i][j] = f[i - 1][j - 1] + f[i - 1][j + 1]; } } cout << f[m][1] << endl; return 0; }值得注意的是,f[31][31]如果放在main函数内部则会因为未初始化而出错。我就因为这个全错了。。。。虽然我学过csapp,但我还是不知道为什么
评论区在强调取模,但我没有看出来他的重要性,明明只是一个简单的计算
#include <bits/stdc++.h> using namespace std; int n,m,a[10010][110],num[10010][110],key,lo; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for (int i = 1; i <= n;i++){ for (int j = 1; j <= m;j++){ cin >> a[i][j] >> num[i][j]; if(a[i][j]) a[i][0]++; } } cin >> lo; lo++; for (int i = 1; i <= n;i++){ key += num[i][lo]; key %= 20123; int x = (num[i][lo]) % a[i][0] + a[i][0]; lo--; while(x){ lo++; if(lo>m)lo=1; if(a[i][lo]) x--; } } cout << key % 20123; return 0; }