1068.Find More Coins
2015-01-23 16:30
381 查看
【题意】
这题是1048题的扩展,能用的硬币数可以不只是两枚,币值和必须跟给定价钱相等
【思路】
用map<int,int>存下每个币值的硬币数,然后从小往大试即可。有点类似于DFS
这题是1048题的扩展,能用的硬币数可以不只是两枚,币值和必须跟给定价钱相等
【思路】
用map<int,int>存下每个币值的硬币数,然后从小往大试即可。有点类似于DFS
#include <iostream> #include <stack> #include <map> using namespace std; map<int,int> coins; stack<int> res; bool findCoins(int value){ for(map<int,int>::iterator it=coins.begin(); it!=coins.end() && (*it).first<=value; it++){ if((*it).second){ coins[(*it).first]--; if((*it).first==value){ res.push((*it).first); return true; } else if(findCoins(value-(*it).first)){ res.push((*it).first); return true; } else{ coins[(*it).first]++; } } } return false; } int main(int argc, char const *argv[]) { int n,m; cin >> n >> m; for(int i=0; i<n; i++){ int num; cin >> num; if(num<=m){ coins[num]++; } } if(findCoins(m)){ bool first = true; while(!res.empty()){ if(first){ first = false; } else{ cout << " "; } cout << res.top(); res.pop(); } } else{ cout << "No Solution"; } system("pause"); return 0; }
相关文章推荐
- 1068. Find More Coins
- 【PAT 1068】 Find More Coins 背包问题
- PAT 1068 Find More Coins
- pat 1068 Find More Coins (30)
- pat 1068 find more coins
- 1068. Find More Coins
- 1068. Find More Coins (30) 01背包
- 1068. Find More Coins
- PAT 甲级 1068 Find More Coins(0,1背包)
- PAT 甲级 1068 Find More Coins(0,1背包)
- 1068. Find More Coins
- PAT (Advanced Level) Practise 1068 Find More Coins (30)
- 1068. Find More Coins
- 1068. Find More Coins (30) (DFS + 回溯剪枝)
- 1068. Find More Coins (30)
- Pat(Advanced Level)Practice--1068(Find More Coins)
- PAT甲级1068【Find More Coins】 dfs
- PAT (Advanced Level) Practise 1068 Find More Coins (30)
- 1068. Find More Coins (30)
- PAT1068 Find More Coins (背包问题)