0
点赞
收藏
分享

微信扫一扫

【动态规划】P1057 传球游戏

罗蓁蓁 2022-02-18 阅读 50

这题思路和数塔游戏/走楼梯 类似,都是找当前位置,是由哪个位置转移过来的,

只要在转移的过程中,找出状态是怎么变的即可

初始化:

dp[1][0]=1:没传的时候在1位置

dp[2][1]=1:1向右传

dp[n][1]=1:1向左传

dp[i][1]=0:其他位置传一步不能传到为0(不用初始化,因为默认为0) 

 

代码:

#include<iostream>
using namespace std;
int n,m;
int dp[31][31];
int main(){
	cin>>n>>m;
	dp[1][0]=1;
	dp[2][1]=1;
	dp[n][1]=1;
	for(int j=1;j<=m;j++){
		for(int i=1;i<=n;i++){
			if(i!=n&&i!=1)
			dp[i][j]=dp[i+1][j-1]+dp[i-1][j-1];
			else if(i==n){
				dp[i][j]=dp[1][j-1]+dp[i-1][j-1];
			}
			else
			{
				dp[i][j]=dp[i+1][j-1]+dp[n][j-1];
			}
			
		}
	}
	cout<<dp[1][m];
	
}

 

举报

相关推荐

0 条评论