使用回溯法
int countQ = 0;
int Target = 0;
int coin[4] = {1,2,5,10};
int total=0;
vector<int> solution;
void dfs(int index)
{
if(total == Target)
{
countQ++;
cout<<countQ<<":";
for(int i=0; i<(int)solution.size(); i++)
{
cout<<solution[i]<<" ";
}
cout<<endl;
return;
}
if(total > Target)
return;
for(int i = index; i < 4; i++)
{
total += coin[i];
solution.push_back(coin[i]);
dfs(i);
solution.pop_back();
total-=coin[i];
}
}
int main() {
Target = 50;
dfs(0);
cout<<countQ<<endl;