DP基础传球游戏

Posted 行码棋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DP基础传球游戏相关的知识,希望对你有一定的参考价值。

  • 博客主页: https://blog.csdn.net/qq_50285142
  • 欢迎点赞👍收藏✨关注❤留言 📝 如有错误,敬请指正
  • 🎈虽然生活很难,但我们也要一直走下去🎈

题目链接

题意:
n个人围成一圈,从自己手上传球m次,求传到自己手上的方案数

思路:
f [ i ] [ j ] f[i][j] f[i][j]代表传球i次,传到j位置的方案数
传到j位置的方案数可以由两边的方案数转移过来,就等于左边位置的方案数加上右边位置的方案数,即 f [ i ] [ j ] = f [ i − 1 ] [ x ] + f [ i − 1 ] [ y ] f[i][j] = f[i-1][x] + f[i-1][y] f[i][j]=f[i1][x]+f[i1][y]
x代表左边的位置,y代表右边的位置,注意特判一下位置到左边的边界和右边的边界,到边界时就要转圈了。

#include<bits/stdc++.h>
using namespace std;
const int N = 35,M = 35;

int f[N][M];
int n,m;

int main()
{
	cin>>n>>m;
	f[0][1] = 1;
	for(int i=1;i<=m;i++)
	{
		for(int j=1;j<=n;j++)
		{
			int x = j-1,y = j + 1;
			if(x==0) x = n;
			if(y==n+1) y = 1;
			f[i][j] = f[i-1][x] + f[i-1][y]; 
		}
	}
	cout<<f[m][1]<<'\\n';
	return 0;
}

往期优质文章推荐

以上是关于DP基础传球游戏的主要内容,如果未能解决你的问题,请参考以下文章

Luogu P1057 传球游戏(dp 递推)

P1057 传球游戏

NOIP 2008 传球游戏

传球游戏

P1057 传球游戏

洛谷——P1057 传球游戏