快速寻找数组的子集之和为固定数
来源:互联网 发布:怎样帮淘宝刷好评挣钱 编辑:程序博客网 时间:2024/05/23 02:29
类似于0-1背包问题
回溯法+剪枝
// MicroSTest4.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#include#includeusing namespace std;vector result;void find_factor(vector & mylis , int sum , int i){ if(i<=0 || sum<=0) return; if(mylis[i] == sum) { for(vector::iterator iter=result.begin(); iter!=result.end();iter++) cout<<*iter<<"+"; cout<<mylis[i]<<endl; return; } result.push_back(mylis[i]); find_factor(mylis , sum-mylis[i] , i-1); result.pop_back(); find_factor(mylis , sum , i-1);} int _tmain(int argc, _TCHAR* argv[]){ int A[20] = {1,3,6,4,2,6,8,9,12,14,7,3,4,10,5,11,13}; vector myvector(A,A+sizeof(A)/sizeof(int)); cout<<"数组长度是 "<<myvector.size()<<endl; //排序前 for(vector::iterator iter=myvector.begin(); iter!=myvector.end();iter++) cout<<*iter<<" "; cout<<endl; //对数组排序 sort(myvector.begin() , myvector.end()); /// /小到大 //排序后 for(vector::iterator iter=myvector.begin(); iter!=myvector.end();iter++) cout<<*iter<<" "; int sum = 15; int num = myvector.size(); find_factor(myvector , sum , num-1); system("pause"); return 0;}
转载地址:
wxl3105的专栏
- 快速寻找数组的子集之和为固定数
- 快速寻找满足条件的两个数(两数之和为给定值)
- C++寻找数组元素组合之和为给定数
- 寻找两数之和为某个值
- 找出数组中两个数之和为指定的数
- 寻找数组中第k小的数:平均情况下时间复杂度为O(n)的快速选择算法
- LeetCode 之 two Sum寻找两个相加之和为给定值的两个数
- LightOJ 1278 一个固定数可以换为几个连续数之和 求这样的连续数有多少对
- 求数组中和为固定数的所有对
- 快速定位已排数组中是否存在两数之和为x
- 数组------寻找和为定值的两个数
- 集合中寻找和为某值的子集
- 在一个数组中找出几个数之和为指定的数
- 求从一个整数数组中两个数之和为m的两个数
- 算法.给定数为数组中2个元素的之和,求出数组的下标
- 【扩展】快速寻找满足条件(两个数的和为指定值)的两个数
- FFT(快速傅立叶变换)求数组中两两之和小于某个数的有多少个
- 常见面试算法题:给定数组中寻找加和为特定数的两个数
- [034] 微信公众帐号开发教程第10篇-解析接口中的消息创建时间CreateTime
- ArcGIS 帮助文档行内模型变量替换的示例的一个错误
- Excel地址转换
- linux系统下更改时间
- java中进行二进制,八进制,十六进制,十进制间进行相互转换
- 快速寻找数组的子集之和为固定数
- 19部“重构心智”影响你世界观的科幻电影
- 使C程序可读的技巧
- java配置环境变量
- jquery的冒泡事件event.stopPropagation()
- Ubuntu login信息的背后
- Android调用jni全过程示例
- 杭电各种测试结果总结
- 抽象类和接口的区别