初级硬币问题
2014-08-28 19:36
197 查看
已知,有一批不同面值的硬币,没有硬币个数限制,求得到S的所有组合,以及最小,最大硬币个数。
最小、最大硬币个数可以用贪心法,但是不一定能够得到有效解,但是可以提高结题速度,此处略。
下面的解法比求解最大、最小硬币比较耗时。
最小、最大硬币个数可以用贪心法,但是不一定能够得到有效解,但是可以提高结题速度,此处略。
下面的解法比求解最大、最小硬币比较耗时。
static int* set; static int Min = 1<<10; static int Max = 0; void LeastCoin(int* Value, int Len, int Goal, int cur) { if(Goal == 0) { for(int i = 0; i < cur; i++) { printf("%d ", set[i]); } if(cur > Max) { Max = cur; } if(Min > cur) { Min = cur; } printf("\n"); } else { for(int i = 0; i < Len; i++) { if(Goal >= Value[i]) { int ok = 1; for(int j = 0; j < cur; j++) { if(set[j] > Value[i]) { ok = 0; break; } } if(ok) { set[cur] = Value[i]; LeastCoin(Value, Len, Goal - Value[i], cur + 1); } } } } } void WLeastCoin(int* Value, int Len, int Goal) { printf("goal: %d\n", Goal); set = new int [Len]; memset(set, 0 , sizeof(int)*Len); int cur = 0; LeastCoin(Value, Len, Goal, cur); printf("Max:%d \n", Max); printf("Min:%d \n", Min); }
相关文章推荐
- 初级硬币最大最小问题递推法
- 初级硬币问题
- 初级硬币最大最小问题递推法
- 最初级的堆栈溢出分析问题
- C#解惑04: 初级问题
- CSDN论坛常见初级问题(陆续更新)
- 称硬币问题
- C#谜题04: 初级问题
- WINDOWS编程入门一个初级问题的分析
- 初级c语言编程问题
- 翻硬币问题的多种求解
- WINDOWS编程入门一个初级问题的分析
- ubuntu 8.10 初级问题集合(wubi安装,软件源,字体,输入法)
- C++典型贪心算法--找硬币问题
- C语言初级问题
- 昨晚的C++初级问题的解决!!!!
- 一个急切解决的xml中的初级的初级问题,请各位同仁帮帮忙,谢谢
- WebsphereApplicationServerNetworkDeployment V6.0的开发部署中的常见问题(初级)
- ZJU2034 False Coin - 称硬币问题
- 项目实施中,针对初级用户的培训人员的安排问题