Gym 100712G Heavy Coins(二进制枚举子集) 解题思路:这是第一次用二进制枚举子集这种做法。二进制枚举子集看这里讲的很清楚AC代码 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[20]; int main() { int T; scanf("%d",&T); while(T--) { int n,s,sum,cnt,ans=0,minn=1001; bool tag=false; scanf("%d%d",&n,&s); for(int i=0;i<n;i++) scanf("%d",&a[i]); for(int i=1;i<(1<<(n+1));i++) { cnt=0,sum=0,minn=1001; for(int j=0;j<n;j++) { int temp=i&(1<<j); if(temp) { sum+=a[j]; cnt++; minn=min(minn,a[j]); } } if(sum>=s&&sum-minn<s) ans=max(ans,cnt); } printf("%d\n",ans); } return 0; }