剑指Offer----面试题28----扩展:从1到n中随意取若干数使之与某一数相等
2016-06-06 23:52
387 查看
题目
输入两个整数n和m,从数列1,2,3...n中随意取几个数,使其和等于m,要求列出所有的组合。源代码:
#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) { list1.reverse(); for (list<int>::iterator iter = list1.begin(); iter != list1.end(); iter++) cout << *iter << "+"; cout << n << endl; list1.reverse(); } list1.push_front(n); find_factor(sum - n, n - 1);//n放在里面 list1.pop_front(); find_factor(sum, n - 1);//n不放在里面 } int main(void) { int sum, n; cin >> sum >> n; cout << "所有可能的序列,如下:" << endl; find_factor(sum, n); system("pause"); return 0; }
运行结果:
10 9 所有可能的序列,如下: 9+1 8+2 7+3 7+2+1 6+4 6+3+1 5+4+1 5+3+2 4+3+2+1 请按任意键继续. . .
相关文章推荐
- 一个关于if else容易迷惑的问题
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- 一道sql面试题附答案
- C# 超高面试题收集整理
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例