类似源码之家的网站,培训机构出来的前端好找工作吗,泰安最大的竞价排名公司,培训1.暴力递归
#xff08;1#xff09;剩余金额小于0#xff0c;无解 剩余金额等于0#xff0c;有解 剩余金额大于0#xff0c;继续递归
#xff08;2#xff09;从大的硬币到小的硬币#xff0c;可以减少循环次数
#include bits/stdc.h
using namespace std;… 1.暴力递归
1剩余金额小于0无解 剩余金额等于0有解 剩余金额大于0继续递归
2从大的硬币到小的硬币可以减少循环次数
#include bits/stdc.h
using namespace std;int amount;
int coins[10]{5,2,1};
int res(int index,int* coins,int remainder)
{
// 剩余金额小于0无解if(remainder0){return 0;}
// 剩余金额等于0有解else if(remainder0){return 1;}
// 剩余金额大于0继续递归else{int mycount0;for(int iindex; i3; i){mycountres(i,coins,remainder-coins[i]);}return mycount;}}int main()
{amount5;coutres(0,coins,amount);
}如果要输出方案的话要用栈让gpt写一下
#include iostream
#include stack
using namespace std;int amount;
int coins[10] {1, 2, 5};void printCombination(stackint combination) {stackint tempStack;while (!combination.empty()) {tempStack.push(combination.top());combination.pop();}cout Combination: ;while (!tempStack.empty()) {cout tempStack.top() ;combination.push(tempStack.top());tempStack.pop();}cout endl;
}int res(int index, int* coinList, int remainder, stackint combination) {if (remainder 0) {return 0;} else if (remainder 0) {printCombination(combination);return 1;} else {int mycount 0;for (int i index; i 3; i) {combination.push(coins[i]);mycount res(i, coinList, remainder - coins[i], combination);combination.pop();}return mycount;}
}int main() {amount 5;stackint combination;cout Total combinations: res(0, coins, amount, combination) endl;return 0;
}