Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
142978 | 吴松韬 | 简单背包问题 | C++ | 通过 | 100 | 0 MS | 248 KB | 528 | 2024-04-11 13:35:03 |
#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; }