题目链接。
分析:
一看题就知道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; }