题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1028
解析:
实际上就是一个分苹果问题
用dp解决,f[i][j]表示i个苹果放在j个盘子里有多少种情况。
在这里贴出很久以前的代码。。。
代码:
#include <stdio.h>
#include <stdlib.h>
int f[121][121];
int main(){
int n;
int m;
int i, j;
for(i = 0; i<=120; i++) {
f[i][0] = 1;
f[i][1] = 1;
f[0][i] = 1;
f[1][i] = 1;
}
for(i = 2; i<=120; i++){
for(j = 2; j<=120; j++){
if(i >= j) f[i][j] = f[i][j-1]+f[i-j][j];
else f[i][j] = f[i][i];
}
}
while(~scanf("%d", &n)){
printf("%d\n", f[n][n]);
}
return 0;
}