Contest3298 - [C3]-周五晚上第六节课-递归2
2024-10-25 18:00:00
3333-10-25 22:00:00
信息与公告
#include<bits/stdc++.h> using namespace std; int f[1011][3]; int dfs(int x, int cnt){ if(x == 1){ if(cnt == 1 || cnt == 0) return 1; else return 0; } if(f[x][cnt] == 0){ if(cnt == 0){ if(f[x - 1][0] == 0) f[x - 1][0] = dfs(x - 1, 0); if(f[x - 1][1] == 0) f[x - 1][1] = dfs(x - 1, 1); if(f[x - 1][2] == 0) f[x - 1][2] = dfs(x - 1, 2); f[x][cnt] = f[x - 1][0] + f[x - 1][1] + f[x - 1][2]; } else if(cnt == 1){ if(f[x - 1][0] == 0) f[x - 1][0] = dfs(x - 1, 0); f[x][cnt] = f[x - 1][0]; } else { if(f[x - 1][1] == 0) f[x - 1][1] = dfs(x - 1, 1); f[x][cnt] = f[x - 1][1]; } f[x][cnt] %= 55555; } return f[x][cnt]; } int main(){ int n; cin >> n; cout << dfs(n+1,0); return 0; }