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[i−1][x]+f[i−1][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基础传球游戏的主要内容,如果未能解决你的问题,请参考以下文章