(转载) 数组a[]={3,5,2,4,1,8},要求从a中找出所有“和”等于10的子集
背包问题。
不过就这道题目本身而言,由于集合a中只要6个元素,而不是成千上万,所以可以使用更直观的办法:
只要你能通过程序给出数组a中元素所组成的集合的所有的子集合(幂集),那么只需在这些集合中搜索等于10的就可以了。
而6个元素构成的集合的幂集可以通过6位二进制数来表示,对于从0到2的6次方减1(63)之间的所有的数,让其每一位比特位代表一个元素,当该位为0时 表示该数所表示的子集中没有这个元素,否则表示拥有这个元素,这样就能对应出所有的组合,然后在这些所有的组合中检测和是否为10就可以了。
1 #include <stdio.h> 2 3 #define ARRAY_SIZE 6 4 #define MAX_NUM (1<<ARRAY_SIZE) 5 int main() 6 { 7 int i, j; 8 int sum; 9 int a[ARRAY_SIZE] = {3,5,2,4,1,8}; 10 int count = 0; 11 12 for(i = 0; i < MAX_NUM; i++) 13 { 14 sum = 0; 15 for(j = 0; j < ARRAY_SIZE; j++) 16 { 17 if(i & (1 << j)) 18 sum += a[j]; 19 } 20 21 if(10 == sum) 22 { 23 printf("%d: ", ++count); 24 for(j = 0; j < ARRAY_SIZE; j++) 25 { 26 if(i & (1 << j)) 27 printf("%d + ", a[j]); 28 } 29 printf("\b\b= 10.\n"); 30 } 31 } 32 printf("\nTotal: %d.\n", count); 33 34 return 0; 35 }
来源:http://xiaozunyan.blog.sohu.com/3534370.html
(转载) 数组a[]={3,5,2,4,1,8},要求从a中找出所有“和”等于10的子集相关推荐
- 从一个数组中找出 N 个数,其和为 M 的所有可能--最 nice 的解法
比起讨论已经存在的大牛,我们更希望有更多有潜力的前端小伙伴成为大牛,只有这样,前端在未来才能够持续不断的发光发热. 故事的背景 这是一个呆萌炫酷吊炸天的前端算法题,曾经乃至现在也是叱咤风云在各个面试场 ...
- c++如何输入数组_从一个数组中找出 N 个数,其和为 M 的所有可能最 nice 的解法...
编者按:本文由前端狂想录公众号授权奇舞周刊转载. 故事的背景 这是一个呆萌炫酷吊炸天的前端算法题,曾经乃至现在也是叱咤风云在各个面试场景中. 可以这样说,有 90% 以上的前端工程师不会做这个题目. ...
- 改进,从一个数组中找出 N 个数,其和为 M 的所有可能
特此说明,本文算法改自于<从一个数组中找出 N 个数,其和为 M 的所有可能--最 nice 的解法>一文.本文不同的是,采用二进制正序表示法,这种实现思路更直观.更简单些. 问题 从一个 ...
- 在数组中找出3个数使得它们和为0
题目: 给定一个集合S,试找出3个数a, b, c,使得a+b+c=0.也即从集合中找出所有的和为0的3个数. 例如:集合S={-1,0, 1, 2, -1, 4},则满足条件的3个数有2对:(-1, ...
- 数据结构与算法--有序数组中找出和为s的两个数字
有序数组中找和为s的两个数字 题目:输入一个递增排序的数组array, 和一个数字s, 在数组中找出两个数,使得这两个数的和是s,如果有多对,输出一对即可. 最简单方案 双循环,每次获取一个数据,和数 ...
- bat从数组中找出相同数字并删除_全网把Map中的hash()分析的最透彻的文章,别无二家...
原文地址:https://mp.weixin.qq.com/s/qCHkzs4JPOipB-ZzqrfbeQ 作者: Hollis 你知道HashMap中hash方法的具体实现吗? 你知道HashTa ...
- 编写一个程序,从10亿个数字的数组中找出100个最大的数字
本文翻译自:Write a program to find 100 largest numbers out of an array of 1 billion numbers I recently at ...
- php判断字符是否在某个数组_php:如何快速在数组array中找出以某字符串开头的值...
我写了个函数,可以实现在数组中找出以某字符串开头的值. public static function arrayContainsValueStartingBy($haystack, $needle) ...
- 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标。
问: /** 给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数 ...
最新文章
- 不同的source control下配置DiffMerge
- ICRA2021| 自动驾驶相关论文汇总
- 【代码实战】基于pytorch实现中文文本分类任务
- AntData.ORM框架 之 读写分离
- JScrollPane实现自动滚动到底部
- 【动态规划】不信看完你还不懂动态规划
- java数组创建后大小能改变吗,在Java中,数组创建成功以后,其大小(??? )(能/不能)改变...
- 计算机网络实验报告访问控制列表,电子政务《计算机网络实验》期末报告 07-访问控制列表实验报告.doc...
- 编辑器Ultraedit快捷键
- linux下的多线程
- Dotnet程序集自动生成版本号
- 9-2 go语言的调度器
- 服务器tomcat优化知识复习总结
- 20165221 JAVA第四周学习心得
- JVM 新生代老年代
- 静态页面评论处理以及列表处理
- LaTex数学符号表(数学中最常用的所有符号)
- 下载特定区域内街景照片数据 | Download Street View Photos within Selected Region
- eclipse windowJAVA版64位安装教程
- HTML5与flash播放器