回复 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;
}