#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,x;
scanf("%d",&n);
scanf("%d",&x);
int *array;
array = (int*)calloc(n,sizeof(int));
for(int i = 0;i < n;i++)
{
scanf("%d",&array[i]);
}
int num = 0;//如果把sum放在这里,每次循环后又会初始化
for(int i = 0;i < (1<<n);i++)
{
int sum = 0;
for(int j = 0;j < n;j++)
{
if((i&(1<<j))>0)
{
sum += array[j];
}
}
if(sum == x)
{
num++;
}
}
free(array);
printf("%d",num);
return 0;
}
这题和李白喝酒的题的做法差不多。