#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1050;
int n,m,res=0;
int a[N];
bool st[N];
void dfs(int start,int sum){
if(sum>m) return ;
if(sum==m) {
res++;
return ;
}
if(start==n) return ;
for(int i=start;i<=n;i++){
if(!st[i]){
st[i]=true;
dfs(i+1,sum+a[i]);
st[i]=false;
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
dfs(1,0);
cout<<res;
return 0;
}
P1164 小A选数
![](https://img-home.csdnimg.cn/images/20240711042549.png)