NOIP普及组2008 传球游戏
考点
- dp
提议概括
n个点,组成一个环,每一单位时间为周围两个点加上自身的值,一开始1号点值为1,求结束时1号点的值
题目链接
额外说明
还记得以前只会打DFS,过不了,学了DP以后惊呼:“这么简单?”
代码
#include<iostream>
#include<cstdio>
using namespace std;
int n,m;
int dp[31][31];//dp[i][j]第i次,j号
int main()
{
scanf("%d%d",&n,&m);
dp[0][1]=1;
for(int i=1;i<=m;++i)
{
dp[i][1]=dp[i-1][n]+dp[i-1][2];
for(int j=2;j<n;++j)
{
dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];
}
dp[i][n]=dp[i-1][1]+dp[i-1][n-1];
}
printf("%d\n",dp[m][1]);
}