Jeu de passe
Idées de résolution de problèmes
Nous pouvons définir f (i, j) comme le nombre de façons dont la balle est au numéro j après avoir passé i secondes.
Comme la balle est au numéro 1 à 0 seconde , la valeur initiale est f (0,1) = 1
car le la balle ne peut être passée que de gauche à droite. à , la formule récursive est
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 [ i-1 ] [ j-1 ]+f [ i-1 ] [ j+1 ]
Mais commeils forment un cercle,la méthode de passage de 1 et n est spéciale
Code 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;
}