zoj1163 The Staircases(DP)
/*
01背包:整数拆分问题
*/
View Code
1 #include <iostream>
2 #include <cstdlib>
3 #include <cstring>
4
5 using namespace std;
6
7 long long dp[ 501 ];
8
9 int main()
10 {
11 memset( dp, 0, sizeof( dp ) );
12 dp[ 0 ]= 1;
13 for ( int i = 1 ; i <= 500 ; ++ i )
14 for ( int j = 500 ; j >= i ; -- j )
15 dp[ j ] += dp[ j-i ];
16 int n;
17 while ( cin >> n && n )
18 cout << dp[ n ]-1 << endl;
19 return 0;
20 }