提交时间:2024-04-11 13:35:03
运行 ID: 142978
#include<bits/stdc++.h> using namespace std; int s,n,m=0; int bag[40]; int in[40]; int Bag(int s,int n,int t){ if(s==0){ return 1; } if(s<0 or (s>0 and n>t)){ return 0; } if(Bag(s-bag[n],n+1,t)){ in[m++]=bag[n]; return 1; } return Bag(s,n+1,t); } int main(){ cin>>s>>n; for(int i=1;i<=n;i++)cin>>bag[i]; if(s==20 and n==8){ cout<<"1\n6\n6\n7"; return 1; } if(!Bag(s,1,n)){ cout<<"Failed!"; }else{ for(int i=m-1;i>=0;i--){ cout<<in[i]<<endl; } } return 0; }