题解:
大法师万岁!!!!!!!!!
直接dfs每一个物件即可
注意什么时候return!
代码:
#include<bits/stdc++.h>
using namespace std;
struct node {
int id,wei,judge;
} a[100005],ans[100005];
int n,s,flag;
void dfs(int tot,int c) {
if(flag) return;
if(tot>s||c>n+1) return;
if(tot==s) {
for(int i=1; i<=c-1; i++)
printf("number:%d weight:%d\n",ans[i].id,ans[i].wei);
flag=1;
}
for(int i=1; i<=n; i++) {
if(a[i].judge==0) {
a[i].judge=1;
ans[c].wei=a[i].wei;
ans[c].id=a[i].id;
dfs(tot+a[i].wei,c+1);
if(flag) return;
a[i].judge=0;
}
}
}
int main() {
scanf("%d%d",&n,&s);
for(int i=1; i<=n; i++) {
scanf("%d",&a[i].wei);
a[i].id=i;
}
dfs(0,1);
if(flag==0) printf("not found");
return 0;
}