Pasando juego (recursividad)

Pasando juego

Inserte la descripción de la imagen aquí

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

Gracias

Supongo que te gusta

Origin blog.csdn.net/weixin_45524309/article/details/111401826
Recomendado
Clasificación