从序列里条N个数,使其和等于M
来源:互联网 发布:天猫第三方数据统计 编辑:程序博客网 时间:2024/05/08 19:08
/*问题描述: 从一个序列里面取N个数,使N个数的和为M ,找出这样的序列*/#include <iostream>using namespace std;int cnt = 2;int target = 9;int count = 0;int tmp = target;void getSubset(int list[],bool v[],int a,int b,int sum){//list是元素列表,v指示每个元素是否被选中到集合中,a,b 是当前处理的元素初始下标和末尾下标if(count == cnt && sum == 0) {for(int i = 0; i < b; i++){if(v[i]) cout<<" "<<list[i];}cout<<endl;return;}if(count >= cnt || sum < 0 || a == b) return;v[a] = true;count++;sum -= list[a];getSubset(list,v,a+1,b,sum);v[a] = false;count--;sum += list[a];getSubset(list,v,a+1,b,sum);}int main(){ int li[] = {1,2,3,4,5,6}; bool v[] = {false,false,false,false}; getSubset(li,v,0,6,tmp);}
程序对组合问题的算法进行改编,增加了子集合元素计数cnt和M减去子集合元素和的变量sum
当cnt等于N 且 sum为零的时候,则找到满足要求的 N 个元素
当cnt大于N或者sum小于零 则寻找失败,退出
a == b 表示子集寻找到一条分支的终点,退出
阅读全文
0 0
- 从序列里条N个数,使其和等于M
- 你如何生成m个数让其和等于n
- 从n个数挑k个,和等于m
- 输入两个整数n和m,从0-n中随意取几个数,使其和等于m
- 从数列1,2,3.......n 中 随意取几个数,使其和等于 m
- 从数列1,2,3.......n 中 随意取几个数,使其和等于 m
- 从数列1,2,3.......n 中 随意取几个数,使其和等于 m
- 从数列1,2,3.......n 中 随意取几个数,使其和等于 m
- 从数列1,2...n中随意取几个数,使其和等于m
- 从数列1,2,3,......,n中随意取出几个数,使其和等于m
- 从n个数中选择m个数,使其和为s
- 元芳,你怎么能随即生成m个数,让其和等于n?
- 怎么能随即生成m个数,让其和等于n?
- 从1到n的数中找若干个数使其和为m
- 一个有趣的算法随机产生N个数,使其总和等于M
- 中兴面试题 : 输入两个整数 n 和 m,从数列1,2,3.......n 中 随意取几个数, 使其和等于 m. --java算法解决方法。
- 输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m
- 输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- 浅谈C++中的函数重载
- maven An error occurred while filtering resources
- JZ2440 配置内存(SDRAM)
- CDH5.11.1集群卸载
- string的10个面试题
- 从序列里条N个数,使其和等于M
- 前中序求后序,中后序求前序
- php杂谈【基础篇】之_4.PHP字符串操作
- 关于swiper在移动端,快速上下滑动出现白边的解决办法
- Notes—Dense Vector and Sparse Vector
- spring boot之EhCache
- spring boot之缓存Redis
- spring boot之Session实现集群-redis
- java虚拟机字节码执行引擎之运行时栈帧结构