/*
此页的程序来自《程序员面试宝典(第三版)》
*/
#include <iostream>
using namespace std;
const int N=10;
int store[N]={0};
int sum=0;
void output()
{
for(int i=0;i<10;++i)
{
cout<<store[i]<<" ";
}
cout<<endl;
++sum;
}
void cumput(int score,int num)
{
if(score<0 || score>(num+1)*10) //退出条件,如果总分小于0,或者不可能完成90换的任务退出;
{
return;
}
if(0==num) //如果是最后一次,则赋值输出;
{
store[num]=score;
output();
//system("pause");
return;
}
for(int i=0;i<11;++i) //对每一个store[num]都尝试0到10的组合;
{
store[num]=i;
cumput(score-i,num-1);
}
}
void main()
{
cumput(90,N-1);
cout<<"总数:"<<sum<<endl;
system("pasue");
}