回复 3楼 寻找南方
程序能否执行和空格的多少没关系的。我用的也是 VC++6.0 可以的,看一下是不是别的问题。
想出了一个更好的办法,用dp做的。时间复杂度很低了,完全符合楼主要求。
代码如下:
#include <iostream>
using namespace std;
int money[8] = { 0, 1, 2, 5, 10, 20, 50, 100 };
long int dp[8][251];
int main()
{
int i, j, n;
for (i = 0; i < 8; i++)
{
dp[i][0] = 1;
dp[i][1] = 1;
}
for (i = 0; i < 251; i++)
{
dp[0][i] = 1;
dp[1][i] = 1;
}
for (i = 2; i < 8; i++)
{
for (j = 2; j < 251; j++)
{
if (j - money[i] >= 0) dp[i][j] = dp[i][j-money[i]] + dp[i-1][j];
else
dp[i][j] = dp[i-1][j];
}
}
while (cin >> n && n != 0)
{
cout << "Total = " << dp[7][n] << endl;
}
return 0;
}