算法学习:子集和数问题求解
来源:互联网 发布:java dwg 编辑:程序博客网 时间:2024/04/29 13:39
子集和数问题
老师课堂上讲回溯法的第二个例子就是子集和数,昨晚上实现了八皇后,今天想按照同样的思路来写一下子集和数。写了两个来小时,发现如果不用递归没有办法表示回溯(都怪我内力太过薄弱,找不到方法。。)可是我看课件的时候,又觉得递归根本没有办法表达出回溯的思想。但是后来写着写成程序,进行不下去的时候,我耐着性子,一步一步写下了递归调用函数的过程,搞明白了算法是属于回溯求解的原因,在这里特别想要感谢一下我们伟大的递归~~~
代码来啦
#include<iostream>using namespace std;const int m = 30;void printresult(int *w, int *x,int n){ for(int i = 1; i <= n; i++) { if(x[i]) { cout << w[i] << " "; } } cout << endl;}void SumOfSub(int s, int k, int r, int *w, int *x){ x[k] = 1; if((w[k] + s) == m) { //打印结果 printresult(w, x, k); }else{ if((s + w[k] + w[k+1]) <= m) { SumOfSub(s+w[k], k+1, r-w[k], w, x); } } if((s + r - w[k]) >= m && (s + w[k+1]) <= m) { x[k] = 0; SumOfSub(s, k+1, r-w[k], w, x); }}int main(){ int w[7] = {0, 5, 10, 12, 13, 15, 18}; int x[7] = {0, 0, 0, 0, 0, 0, 0}; SumOfSub(0, 1, 73, w, x); return 0;}
这段代码里面还有一点我没有想明白,就是数组x在调用过程中的变化,有待进一步思考~~
啦啦啦,今天的小代码完成啦~~
每天写一点,写到我不怕写代码,甚至爱上它为止,啦啦啦~~
中午的米线好多,吃的好饱,哈哈哈
0 0
- 算法学习:子集和数问题求解
- 子集和数问题
- 回溯法-子集和数问题
- 回溯法---->子集和数问题
- 子集和问题 暴力求解算法
- 子集和数
- 子集和数
- 子集和数问题 C++程序实现 回溯
- 子集枚举问题求解-Prolog
- 算法学习之子集生成问题
- 子集和数JAVA实现
- 算法学习--子集
- 子集和问题 回溯法求解
- 4004:数字组合||子集和数
- 算法设计与分析实验四回溯法+子集树+最大团+0-1背包问题求解
- 【算法总结-排列组合与子集问题】排列组合与子集问题
- 【算法总结-排列组合与子集问题】排列组合与子集问题
- 回溯法实现求解子集合和问题
- 黑马程序员-OC语言-封装
- LeetCode Merge Two Sorted Lists(合并两个有序链表)
- boost split和lexical_cast配合使用处理文本
- 为什eclipse中调试的时候总是不弹出调试界面而是安装运行
- composer更换为国内镜像源
- 算法学习:子集和数问题求解
- java设计模式
- 字符集相关
- LeetCode Sort List(链表排序)
- 【蓝桥第一周】最少硬币问题
- 高斯定时器导致的NotHttpResponseException:The target server failed to repond异常 -- 解决
- 查看mysql当前连接数
- 创建XML文件
- svn图标不显示的解决方案