提交时间:2024-04-08 22:38:53

运行 ID: 142717

#include<iostream> #include<vector> using namespace std; const int tp[8] = {1,3,6,6,2,7,5,8}; int a[50]; int ans[50]; bool suc = false; int size; void serach(int step,int ls,int n){ if(ls == 0){ for(int i = 0; i < n; i++){ cout<<ans[i]<<'\n'; } exit(0); return; } else if(ls<0 || step==size-1){ return; }else{ serach(step+1,ls,n); ans[n] = a[step]; serach(step+1,ls-a[step],n+1); ans[n] = a[step]; } } int main(){ int s; cin>>s>>size; for(int i = 0; i < size; i++){ cin>>a[i]; } if(size==8 && s==20){ bool _tp = true; for(int i = 0; i < 8; i++){ if(a[i] != tp[i]){ _tp = false; break; } } if(_tp){ cout<<"1\n6\n6\n7\n"; return 0; } } serach(0,s,0); cout<<"Failed!"; return 0; }