题目:整数不重复拆分。
分析:dp,01背包。整数拆分可以背包。
说明:(2011-09-19 09:42)。
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
long long dp[ 501 ];
int main()
{
memset( dp, 0, sizeof( dp ) );
dp[ 0 ]= 1;
for ( int i = 1 ; i <= 500 ; ++ i )
for ( int j = 500 ; j >= i ; -- j )
dp[ j ] += dp[ j-i ];
int n;
while ( cin >> n && n )
cout << dp[ n ]-1 << endl;
return 0;
}