背包问题
2016-07-19 15:04
281 查看
输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数,使其和等于 m ,要求将其中所有的可能组合列出来。
#include<list> #include<iostream> using namespace std; list<int> list1; void find_factor(int sum, int n) { // 递归出口 if (sum <= 0 || n <= 0) return; // 输出找到的结果 if (sum == n) { for (list<int>::iterator ite = list1.begin(); ite != list1.end(); ite++) cout << *ite << " + "; cout << n << endl; } //典型的01背包问题 list1.push_back(n); //放n,n-1个数填满sum-n find_factor(sum - n, n - 1); list1.pop_back(); //不放n,n-1个数填满sum find_factor(sum, n - 1); } int main() { int sum, n; cout << "请输入你要等于多少的数值sum:" << endl; cin >> sum; cout << "请输入你要从1.....n数列中取值的n:" << endl; cin >> n; cout << "所有可能的序列,如下:" << endl; find_factor(sum, n); system("pause"); return 0; }
相关文章推荐
- Linux-理解ARP、网关、路由
- 深入浅出JMS(一)--JMS基本概念
- infobright 导入 导出
- ConcurrentHashMap深入分析
- python怎么获取windows服务的PID
- JAVA DVD管理系统
- 百度地图sdk使用
- Android 上的数据格式 FlatBuffers
- Java中Synchronized的用法
- Spring中jdbcTemplate的用法实例(一)
- C++语法 :C++中的头文件和源文件
- 在新linux中使用proc_create_data编写proc
- Android开发技术周报 Issue#25
- [JAVA]随机省市
- es6学习笔记10--箭头函数
- javascript - 浏览器对象
- 记毕业
- jQuery选择器和选取方法
- HDU 1754 I Hate It 线段树
- PHP 异步的curl