从1-n这n个数里面,随机选出若干个数,使之和为sum
来源:互联网 发布:javascript 数组初始化 编辑:程序博客网 时间:2024/05/21 22:53
给你一个接口find_factor(int sum,int n),实现这个功能,求出从1到n的n个数中选出若干个数使之和为sum的所有可能情况,并打印出来;
分析:典型的0-1背包问题,总和一定,挑出几个和满足条件的。不过这个用递归的思想解决比较容易,也容易懂,核心思想见代码:
代码如下:
// [9/17/2013 qingezha] 和为sum ,加数为 1 到 n,随机选出若干个数,使之和为sum,整数相加,中兴面试void find_factor(int sum, int n) { list<int>list1; int ie = 1;// 递归出口 if(n <= 0 || sum <= 0) return; // 输出找到的结果 if(sum == n) { // 反转list list1.reverse(); cout<<ie++;for(list<int>::iterator iter = list1.begin(); iter != list1.end(); iter++) cout<<" "<< *iter << " + "; cout << n << endl; list1.reverse(); } list1.push_front(n); //典型的01背包问题 find_factor(sum-n, n-1); //放n,n-1个数填满sum-n list1.pop_front(); find_factor(sum, n-1); //不放n,n-1个数填满sum }
如果这些数可以重复使用,那么将是另外一种情况:
比如,有1分 2分 5分 10 分 无数张,求多少中组合可以使总数达到N分
代码如下:
// [9/24/2013 qingezha] 有1分 2分 5分 10分无限张,求有多少种组合可以组合成 N 分//回溯解空间中寻找答案int coins[4] = {1,2,5,10};int total = 0;vector<int> solution;int count = 0;void dfs(int index,int target){if (target == total){++count;cout<<count<<":";for(int i=0;i<solution.size();++i)cout<<solution[i]<<" ";cout<<endl;}if(total>target) return;//总和溢出了,就退回for (int i=index;i<4;++i)//i 从 index 开始{total += coins[i];solution.push_back(coins[i]);//放进去一个dfs(i,target);//继续放,然后检查总和是否为target,solution.pop_back();total -= coins[i];}}
- 从1-n这n个数里面,随机选出若干个数,使之和为sum
- 从N个数总随机选出M个数
- 从给定的N个正数中选取若干个数之和为M
- 从M个数中随机选出N个数的所有组合,无序,(一)
- 从M个数中随机选出N个数的所有组合,有序,(二)
- 从1到n的数中找若干个数使其和为m
- 每日一练——从长度为n的数组里选出m个数使和为固定值sum
- 从1到m随机n个数
- 从数组中选出n个数之和为k
- 从N个数里面,随机抽取M个数(可以用作抽奖随机用户)
- 键盘输入N个数之和
- 搜狗面试题:从N个正实数中选若干个数之和最接近M的递归实现
- 从给定的N个正数中选取若干个数之和最接近M
- 面试题:从给定的N个正数中选取若干个数之和最接近M
- 从给定的N个正数中选取若干个数之和最接近M
- 面试题:从给定的N个正数中选取若干个数之和最接近M
- N个正数选取若干个数之和最接近M
- 随机生成n个数
- 二叉树遍历方法小结
- Ubuntu中Git服务器搭建
- 大话设计模式_程杰(奋斗的小鸟)_PDF 电子书
- 一个从NDK中提取独立工具链的脚本
- 轻松使用线程: 不共享有时是最好的——利用 ThreadLocal 提高可伸缩性
- 从1-n这n个数里面,随机选出若干个数,使之和为sum
- 负载类型为 MPEG-4 Elementary Stream 的 RTP 包的封包讲解
- HDOJ 4386 —— 简单几何
- 自我介绍,我是小小的菜鸟程序员
- jQuery核心函数介绍-jQuery(expression, [context])
- 大话数据结构四:线性表的链式存储结构(单向循环链表)
- 无题
- ADB server didn't ACK解决办法
- MFC中定义全局变量和全局函数的方法