凑成整数x----二进制枚举

给n个数,给定x。

用这n个数求和凑成x,问有多少种凑法。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,x;
    cin>>n>>x;
    int a[25];
    for(int i=0;i<n;i++) cin>>a[i];
    int ans=0;
    for(int i=0;i<(1<<n);i++)
    {
        int sum=0;
        for(int j=0;j<n;j++)
        {
            if(i&(1<<j))
            {
                sum+=a[j];
            }
        }
        if(sum==x) ans++;
    }
    cout<<ans<<endl;
    return 0;
}

 

posted @ 2017-02-11 10:32  超级学渣渣  阅读(178)  评论(0编辑  收藏  举报