Jeu de passes (récursivité)

Jeu de passe

Insérez la description de l'image ici

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;
}

Merci

Je suppose que tu aimes

Origine blog.csdn.net/weixin_45524309/article/details/111401826
conseillé
Classement