ZJNU 1138 - 小兔的棋盘——中级

二维图的动态规划

因为不能穿越对角线,则选取对角线的一边dp即可

选取对角线右下侧

则x轴上每个点只能由其左侧的点走过去(只有1条)

对角线上的点只能由对角线下方的点走过去

其他点可以由左侧和下侧两种方式到达

因为对角线左上和右下均可

所以答案*2

#include<stdio.h>
long long s[36][36];
int main(){
    int n,i,j,N=0;
    for(i=1;i<=35;i++){
        s[i][0]=1;
        for(j=1;j<i;j++)
            s[i][j]=s[i][j-1]+s[i-1][j];
        s[i][i]=s[i][i-1];
    }
    while(scanf("%d",&n)!=EOF&&n!=-1){
        N++;
        printf("%d %d %lld\n",N,n,s[n][n]*2);
    }
    return 0;
}

 

posted @ 2020-01-19 13:56  StelaYuri  阅读(129)  评论(0编辑  收藏  举报