#include <stdio.h>
int f[121][121];
void init( )
{
int i, j;
for(i = 1; i <= 120; i++)
f[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][i];
else if(i == j)
f[i][j] = 1+ f[i][j-1];
else
f[i][j] = f[i-j][j] + f[i][j-1];
}
}
}
int main (void)
{
int i;
init();
while(scanf("%d", &i) != EOF)
printf("%d\n", f[i][i]);
return 0;
}
http://www.cnblogs.com/hoodlum1980/archive/2008/10/11/1308493.html