您的位置:首页 > 其它

HDU 2067 小兔的棋盘(dp)

2015-06-14 23:23 295 查看
#include<stdio.h>
#include<math.h>
#include<string.h>
typedef long long ll;
ll dp[40][40];
void init()
{
    int i,j;
    for(i=1;i<40;i++)
        dp[1][i]=1;
    for(i=2;i<40;i++)

    {
        dp[i][i]=dp[i-1][i];
        for(j=i+1;j<40;j++)
            dp[i][j]=dp[i-1][j]+dp[i][j-1];
    }
}
int main()

{
    int n,t=1;
    init();
    while(scanf("%d",&n)!=EOF )
    {
        if(n==-1) break;
        printf("%d %d %I64d\n",t++,n,2*dp[n+1][n+1]);
    }
    return 0;
}


可以用DP推导出递推式子

dp[i][i]=dp[i-1][i]

dp[i][j]=dp[i-1][j]+dp[i][j-1]

最后答案就是2*dp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: