【水DP】HDU 1267——下沙的沙子有几粒?

题目链接:点击打开链接

相当水的DP,状态方程也很简单:dp(m,n)=dp(m,n-1)+dp(m-1,n),其中m<n的话排列的情况不存在。

dp的精髓就是状态方程。

#include <iostream>
#include <cstring>
using namespace std;

__int64 dp[21][21];

int main()
{
	int m,n;
	while(cin>>m>>n)
	{
		memset(dp,0,sizeof(dp));
		if(m<n)
		{
			cout<<0<<endl;
			continue;
		}
		else
		{	
			for(int a=1;a<=m;a++)
			{
				dp[a][0]=1;
			}
			for(int i=1;i<=20;i++)
			{
				for(int j=1;j<=i;j++)
				{
					dp[i][j]=dp[i][j-1]+dp[i-1][j];
				}
			}
		
			cout<<dp[m][n]<<endl;
		}
		
	}
	
	
	
	return 0;
} 


你可能感兴趣的:(【水DP】HDU 1267——下沙的沙子有几粒?)