如何保存成功方案的状态!!!
#include <bits/stdc++.h>
int a[1000];
int aim,n;
int b[1000];
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int sum=0;
void search(int k,int depth){
if( k==aim ){ //把这个写前面
cout<<"yes";
//int len=b.length;
for(int i=1;i<=depth;i++)
cout<<b[i]<<" ";
return;
}
if(depth>=4){
if( k==aim ){
cout<<"yes";
//int len=b.length;
for(int i=1;i<=depth;i++)
cout<<b[i]<<" ";
return;
}
return;
}
b[depth+1]=a[depth+1];
search(k+a[depth+1],depth+1);
b[depth+1]=0;
b[depth+1]=0;
search(k,depth+1);
b[depth+1]=0;
//b[depth-1]=0;
}
int main(int argc, char** argv) {
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
cin>>aim;
search(0,0);
return 0;
}