DFS深度优先搜索简单案例:Coin解决方案
2013-09-24 15:43
597 查看
2012创新工场校园招聘的一道编程算法题:有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
/** * Coin Permutation * 有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱? * @author arhaiyun * Date: 2013-09-24 */ #include "stdafx.h" #include <iostream> #include <vector> using namespace std; int target = 0; //目标coin分数 int curCoins = 0; //当前coin总数 int count = 0; vector<int> solution; //记录排列解决方案 int coins[] = {1, 2, 5, 10}; void dfsCoinSolution(int index) { if(curCoins == target) { count++; vector<int>::iterator iter = solution.begin(); cout<<"["<<count<<"]:"; for(; iter != solution.end(); iter++) { cout<<(*iter)<<" "; } cout<<endl; return; } if(curCoins > target) return; for(int i = index; i < 4; i++) { solution.push_back(coins[i]); curCoins += coins[i]; dfsCoinSolution(i); curCoins -= coins[i]; solution.pop_back(); } } int main(void) { while(1) { count = 0; cin>>target; if(target <= 0) break; dfsCoinSolution(0); } return 0; }
相关文章推荐
- DFS深度优先搜索案例:马戏团叠罗汉
- DFS深度优先搜索案例:马戏团叠罗汉
- 深度优先搜索DFS和广度优先搜索BFS简单解析(新手向)
- DFS--深度优先搜索--图的邻接表表示
- 数据结构和算法总结(一):广度优先搜索BFS和深度优先搜索DFS
- DFS深度优先搜索之走迷宫
- 深度优先搜索DFS——图邻接矩阵表示
- POJ-2488 A Knights Journey-深度优先搜索DFS
- 深度优先搜索DFS:八皇后问题(去掉不能再一条斜线上的条件) C++
- [SDUT](3469)深度优先搜索练习之神奇的矩环 ---DFS(图)
- 深度优先搜索DFS
- DFS--深度优先搜索--图的邻接矩阵
- leetcode 698. Partition to K Equal Sum Subsets K个相等子集 + 深度优先搜索DFS
- 深度优先搜索DFS
- DFS深度优先搜索结合剪枝的应用
- 深度优先搜索DFS
- leetcode 508. Most Frequent Subtree Sum 子树和 + 一个简单的DFS深度优先遍历的做法
- nyoj 部分和问题(深度优先搜索DFS)
- 深度优先搜索的演示学习法——BlackBlank平台应用教学案例
- 方格填数【相邻两数互质】-DFS深度优先搜索