【递推】Ybt_传球游戏

说实话这题写过博客了,但之前写得太丑了ww


题目


3<=n<=30,1<=m<=30.
球只能左右传。
所以对于第i个时间段,第j个人要么从他左边获得球,要么从他右边获得球。
所以 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[i1][j1]+F[i1][j+1]


代码

#include<cstdio>
int n,m,f[40][40];
int main(){
    
    
	scanf("%d%d", &n, &m);
	f[0][1] = 1;  //球在小蛮手上。
	for(int i = 1; i <= m; ++i){
    
    
		f[i][1] = f[i-1][2] + f[i-1][n];  //特别处理了一下边界,毕竟它是个环
		f[i][n] = f[i-1][n-1] + f[i-1][1];
		for(int j = 2; j < n; ++j)
		  f[i][j] = f[i-1][j-1] + f[i-1][j+1];
	}
	printf("%d", f[m][1]); //第m个时间段,球到小蛮手上的方案数
} 

猜你喜欢

转载自blog.csdn.net/qq_42937087/article/details/111715435
今日推荐