提交时间:2024-04-06 15:18:15

运行 ID: 141966

#include<bits/stdc++.h> using namespace std; bool cmp(int x,int y){ return x>y; } int w[1005],s[1005],x,m,l[1005]; int print(int p){ for(int i=p;i>=1;i--){ cout<<l[i]<<" "; } } int se(int n,int k,int cnt){ if(w[n]>k||n>m) return 0; se(n+1,k,cnt); l[cnt]=w[n]; k-=w[n]; if(k==0) print(cnt); else se(n+1,k,cnt+1); k+=w[n]; } int main(){ cin>>m>>x; for(int i=1;i<=x;i++) cin>>w[i]; sort(w+1,w+x+1,cmp); se(1,x,1); }