DP【洛谷P1057】

直接上链接吧:https://www.luogu.org/problemnew/show/P1057

这题一看就是个DP,所以我不会做。

直接上思路:
dp[i][k]表示经过k次传球,传到i手中的方案数,所以dp[i][k] = dp[i-1][k-1]+dp[i+1][k-1]  (i==1 || i==n需单独考虑)

下面上代码:
 

#include 
using namespace std;
const int maxn = 40;
int dp[maxn][maxn];
int main()
{
	int n,m;
	cin>>n>>m;
	dp[1][0] = 1;
	for(int k=1;k<=m;k++)
	{
		dp[1][k] = dp[2][k-1]+dp[n][k-1];
		for(int i=2;i<=n-1;i++)
		{
			dp[i][k] = dp[i-1][k-1]+dp[i+1][k-1];
		}
		dp[n][k] = dp[1][k-1]+dp[n-1][k-1];
	}
	cout<

DP好难啊,真的不会做

你可能感兴趣的:(DP【洛谷P1057】)