整數劃歸的題目,可以使用滾動數組節省空間。
#include <stdio.h>

const int bas = 1000000007;

int dp[4501][4501];

int main ()


{

int n, m;

while ( scanf ( "%d%d", &n, &m ) != EOF )

{
int i, j;
for ( i=1; i<=n; i++ )

{
dp[i][0] = 0;
dp[0][i] = 1;
}
dp[0][0] = 1;

for ( i=1; i<=m; i++ )

{
for ( j=1; j<=n; j++ )

{
if ( i >= j )

{
dp[i][j] = ( dp[i][j-1] + dp[i-j][j] ) % bas;
}
else

{
dp[i][j] = dp[i][j-1];
}
}
}

printf ( "%d\n", dp[m][n] );
}
return 0;
}






















































