Pasando juego
Ideas para resolver problemas
Podemos establecer f (i, j) como el número de maneras en que la pelota está en el número j después de pasar i segundos.
Como la pelota está en el número 1 a los 0 segundos , el valor inicial es f (0,1) = 1
porque el la pelota solo se puede pasar de izquierda a derecha. a , la fórmula recursiva es
f [i] [j] = f [i - 1] [j - 1] + f [i - 1] [j + 1] f [i ] [j] = f [i- 1] [j-1] + f [i-1] [j + 1]f [ i ] [ j ]=f [ yo-1 ] [ j-1 ]+f [ yo-1 ] [ j+1 ]
Pero debido aque forman un círculo,el método de paso de 1 y n es especial
Código AC
#include<cstdio>
using namespace std;
int n,m,f[35][35];
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][n]+f[i-1][j+1];
else if(j==n)f[i][j]=f[i-1][j-1]+f[i-1][1];
else f[i][j]=f[i-1][j-1]+f[i-1][j+1];
printf("%d",f[m][1]);
return 0;
}