寻找和为定值的多个数 【微软面试100题 第二十一题】
2014-11-05 14:31
316 查看
题目要求:
输入两个整数 n 和m ,从数列1, 2,3.......n 中随意取几个数 ,使其和等于 m
,要求将其中所有的可能组合列出来。不能是一个数。
题目分析:
0/1背包问题,动态规划
代码实现:
输入两个整数 n 和m ,从数列1, 2,3.......n 中随意取几个数 ,使其和等于 m
,要求将其中所有的可能组合列出来。不能是一个数。
题目分析:
0/1背包问题,动态规划
代码实现:
#include<iostream> #include<list> using namespace std; list<int>list1; void find_factor(int sum, int n) { // 递归出口 if(n <= 0 || sum <= 0) return; // 输出找到的结果 if(sum == n) { //从栈顶逐个输出 for(list<int >::iterator iter = list1.begin(); iter != list1.end(); iter++) cout << *iter << " + "; //输出本次的 cout << n << endl; } //插入到栈底,这样输出的时候就是从大到小输出了。 list1.push_back(n); //典型的背包问题 find_factor(sum-n, n-1); //放n ,n-1 个数填满 sum-n list1.pop_back(); find_factor(sum, n-1); //不放n ,n-1 个数填满 sum } int main() { int sum, n; cout << "请输入你要等于多少的数值 sum:" << endl; cin >> sum; cout << "请输入你要从n 数列中取值的 n:" << endl; cin >> n; cout << "所有可能的序列,如下: " << endl; find_factor(sum,n); return 0; }
相关文章推荐
- 寻找和为定值的多个数 【微软面试100题 第二十一题】
- 微软面试100题---寻找和为定值的多个数
- 寻找丑数 【微软面试100题 第六十四题】
- 寻找丑数 【微软面试100题 第六十四题】
- 微软等数据结构与算法面试100题 第二十一题
- 【微软谷歌面试100题--【21】从1-n中找出和为m的所有组合
- 微软面试100题2010年版全部答案集锦(转自July)
- 【微软谷歌面试100题--【45】一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值
- [微软面试100题]41-50
- 永久勘误:微软等面试100题答案V0.2版[第1-20题答案]
- 微软面试100题之14题:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。
- [汇总I]精选微软等公司数据结构+算法面试100题[第1-60题汇总]
- 微软面试100题之25题:写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 微软面试100题总结
- 互联网--评微软等公司数据结构和算法面试100题 .
- 全新整理:微软、谷歌、百度等公司经典面试100题[第1-60题]
- 微软面试100题之第5题
- 求比赛名次 【微软面试100题 第三十六题】
- zt微软面试100题 [机密]11-20
- 微软面试100题系列---求1+2+3+...+n