洛谷P1057 传球游戏
f[i][j]表示第i轮j拿到球的方案数
转移:f[i][j]=f[i-1][j+1] +f[i-1][j+-1].
注意:
边界f[0][1]=1; 还有当j=1或N时
#include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std; int n,m; int f[110][110]; int main() { scanf("%d%d",&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][j+1]+f[i-1][n]; continue; } if(j==n) { f[i][j]=f[i-1][1]+f[i-1][j-1]; continue; } f[i][j]=f[i-1][j-1]+f[i-1][j+1]; } cout<<f[m][1]; return 0; }