小墨在努力!!
吗了个b的。。。。。

母函数水过:

View Code
 1 #include <stdio.h>
2 #include <string.h>
3 long solve(int n)
4 {
5 int i ,j ,k;
6 long c[121] ,a[121];
7 memset(a ,1 ,sizeof(a));
8 for(i = 0 ;i <= n ;i++)
9 a[i] = 1;
10 for(i = 2 ;i <= n ;i++) //控制多项式的个数
11 {
12 memset(c ,0 ,sizeof(c));
13 for(j = 0 ;j <= n ;j += i)
14 {
15 for(k = 0 ;k + j <= n ;k++)
16 c[j + k] += a[k];
17 }
18 memcpy(a ,c ,sizeof(c));
19 }
20 return a[n];
21 }
22 int main()
23 {
24 int n;
25 while(scanf("%d",&n) != EOF)
26 printf("%ld\n",solve(n));
27 return 0;
28 }

 

递归:

View Code
 1 #include <stdio.h>
2 #include <string.h>
3 int f[121][121];
4 int solve(int n ,int k)
5 {
6 if(k == 0) return f[n][k];
7 else
8 {
9 if(k >= n)
10 {
11 if(f[n][k] == 0)
12 {
13 if(f[n][n - 1] == 0) f[n][n - 1] = solve(n ,n - 1);
14 f[n][k] = f[n][n - 1] + 1;
15 }
16 return f[n][k];
17 }
18 else
19 {
20 if(f[n][k] == 0)
21 {
22 if(f[n][k - 1] == 0) f[n][k - 1] = solve(n ,k - 1);
23 if(f[n - k][k] == 0) f[n - k][k] = solve(n - k ,k);
24 f[n][k] = f[n][k - 1] + f[n - k][k];
25 }
26 return f[n][k];
27 }
28 }
29 }
30 int main()
31 {
32 int n;
33 while(scanf("%d",&n) != EOF)
34 {
35 memset(f ,0 ,sizeof(f));
36 printf("%d\n",solve(n ,n));
37 }
38 return 0;
39 }

 

posted on 2012-04-02 20:54  小墨在努力!!  阅读(144)  评论(0编辑  收藏  举报