HDU1028 Ignatius and the Princess III(dp)

题目链接

分析:

一看题就知道dp,dp不出来。上网查,怎么也看不懂。

现在看懂了,觉得真简单,没看懂时,费老大劲了。

在这里要感谢下崔学长和尚学姐(在百度搜,搜到了,讲解很精辟,讲解地址,崔学长在一楼,尚学姐在11楼)。

另外,又发现一个母函数的知识点,抽空学习下。

代码如下:

#include <stdio.h> 
#include <string.h> 
#define MAXN 150 
int dp[MAXN][MAXN]; 
int main(){
    int n, i, j;
    memset(dp, 0, sizeof(dp)); 
    for(i=1; i<=120; i++){
         for(j=1; j<=120; j++){
            if(i>j) dp[i][j] = dp[i][j-1]+dp[i-j][j]; 
            else if(i == j) dp[i][j] = dp[i][j-1]+1; 
            else dp[i][j] = dp[i][i];
        }
    } 
    while(scanf("%d", &n) == 1){
        printf("%d\n", dp[n][n]);
    } 
    return 0;
}      

 

 

 

 

posted on 2013-03-14 19:34  Still_Raining  阅读(167)  评论(0编辑  收藏  举报