如何保存成功方案的状态!!!
#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;
}
递归搜索算法解析
本文介绍了一种使用C++实现的递归搜索算法,通过跟踪状态来寻找达到目标状态的路径。该算法适用于求解组合问题,如背包问题等。文章详细展示了如何通过递归调用保存中间状态并最终输出解决方案。
1574

被折叠的 条评论
为什么被折叠?



