【二进制枚举】求在n个数中取任意个数加起来组成x的方案数
2017-02-08 18:31
232 查看
问题:n个互不重复的数,通过加法凑出X,求出有多少种方案?(1<=n<=20,1<=X<=2000)
输入格式:n,x,n个整数
思路:由于n并不大,可以使用二进制枚举的方法。简单题,看代码就能够理解
输入格式:n,x,n个整数
思路:由于n并不大,可以使用二进制枚举的方法。简单题,看代码就能够理解
#include <iostream> #include <algorithm> #include <vector> #include <stdio.h> #include <cstring> using namespace std; int num[21]; int main() { int n,x,i,j,temp,tot=0; scanf("%d%d",&n,&x); for(i=0;i<n;i++)scanf("%d",&num[i]); for(i=0;i<(1<<n);i++) { temp=0; for(j=0;j<n;j++) { if(i&(1<<j))//判断二进制i从右数第j+1位是否为1 temp+=num[j]; } if(temp==x)tot++; } printf("%d",tot); }
相关文章推荐
- 输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对所给的n和s,寻找一种方案使得剩下的数字组成的新数最小。
- USACO section 2.1 Healthy Holsteins(枚举,二进制存储)
- hdu4421 2-sat(枚举二进制每一位)
- USACO Healthy Holsteins(二进制枚举子集)
- Leet Code 1:计算数组中两个任意数加起来等于目标数
- 让Windows 2000/XP中的任意窗口透明起来
- MySQL备份方案-->(利用mysqldump以及binlog二进制日志)
- 给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- [阿里笔试]有8只球队,采用抽签的方式随机配对,组成4场比赛。假设其中有4只强队,那么出现强强对话 (任意两只强队相遇)的概率是?
- 有任意不相同的4个整数,能组成多少个不相同无重复的三位数
- json传输二进制的方案
- 等待所有或任意异步任务完成,以及异步任务完成时的处理方案
- (一一五)利用NSKeyedArchiver实现任意对象转为二进制
- 【编程之美】任意给定一个32位无符号整数n,求n的二进制表示中1的个数
- 二进制枚举:幼儿园买玩具
- 统计二进制中1的个数(四种方案)
- 将1、2、3、4组成任意互不相同的三位数输出,每行控制输出3个数。
- Android之使用枚举利弊及替代方案
- POJ 1873 The Fortified Forest 凸包 二进制枚举
- 经典证明:任何正整数着色方案中都含任意长的单色等差数列