得到整数

某君有 n个互不相同的正整数,现在他要从这 n 个正整数之中无重复地选取任意个数,并仅通过加法凑出整数X 。
求某君有多少种不同的方案来凑出整数 。
输入格式
第一行,输入两个整数 n,X。(1≤n≤20,1≤X≤2000),X(1≤n≤20,1≤X≤2000)
接下来输入 n 个整数,每个整数不超过100 。
输出格式
输出一个整数,表示能凑出 X 的方案数。
样例输入
6 6
1 2 3 4 5 6
样例输出
4
题解:
重点在无重复,任意个数
代码:

#include<iostream>
using namespace std;
int main()
{
 int n, X, s=0;
 int a[20];
 cout << "请输入n的大小:";
 cin >> n;
 cout << "请输入X的值:";
 cin >> X;
 for (int i = 0; i < n; i++)
 {
  cin >> a[i];
 }
 for (int i = 0; i < n; i++)
 {
  int t=0;
  for (int j = 0; j < n; j++)
  {
   if (i&(1 << j))    //****
     t += a[j];
  }
  if (n == X)
   s++;
 }
 cout << s;
 return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43612495/article/details/86519189
今日推荐