[各种面试题] 打印和为给定数的所有形式
来源:互联网 发布:我的世界java内存 编辑:程序博客网 时间:2024/06/02 03:22
题目:
给定一个数N,打印所有和为N的分解形式:
如对于N=5:
1+1+1+1+1
1+1+1+2
等等。
还算比较好写的,但是第一次写了之后发现有重复的,比如对于N=3,会有1+2和2+1两种形式都出来了。
为了去掉重复的可能,递归到每一个子和的时候,只能从比前一个数大的那些数开始取。
代码:
#include<iostream>#include<iterator>#include<vector>#include<algorithm>using namespace std;int target;ostream_iterator<int> os(cout," ");void search(vector<int>& have, int sum){if ( sum==0){copy(have.begin(),have.end(),os);cout<<endl;return;}if ( sum < 0 ) return;int i=sum==target?1:have.back();for(;i<=sum;i++){have.push_back(i);search(have,sum-i);have.pop_back();}}int main(){while(1){cin>>target;if (target==0)break;vector<int> have;search(have,target);}}
- [各种面试题] 打印和为给定数的所有形式
- 面试题41_2 输入一个正数s,打印所有和为s的连续正数序列(至少两个数)
- 也说一道面试题 求数组中所有和为某固定数的所有数对
- 《剑指Offer》面试题:打印出二叉树中结点值的和为输入整数的所有路径
- 动态规划 解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 二分法解决打印所有和为s的连续整数序列 剑指offer 之 面试题41_2
- 基于Visual C++2013拆解世界五百强面试题--题2-输出和为一个给定整数的所有组合
- 基于Visual C++2013拆解世界五百强面试题--题2-输出和为一个给定整数的所有组合
- 不重复打印排序数组中相加和为给定值的所有二元三元组
- 和为给定值的所有组合
- 程序员面试题100题第10题——在排序数组中查找和为给定值的两个数
- 和为给定数
- [各种面试题] 困难的数
- 面试题41_1 和为S的数
- 面试题41—和为s的两个数
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 求数组中和为给定数所有的组合
- [各种面试题] 两数乘积全为1的最小位数
- wwj world wind java 显示乱码问题
- android之merge布局
- ubuntu jdk java
- ubuntu eclipse
- world wind 汉化
- [各种面试题] 打印和为给定数的所有形式
- ubuntu windowns win7 grub 启动菜单修复
- Android国行手机使用Google Play Store
- java sdk eclipse ubuntu
- Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
- 用CSV方式重写挑选仪器起止编号的Python程序
- 《阿勇java建站教程》1.4-丰富的html标签
- Installing PostGIS 2.0 on ubuntu
- 新生活,在润乾