//从5个数中选择3个数的回溯算法
#include<iostream>
#include<vector>
using namespace std;
int a[]={1,2,3,4,5};
bool visited[5];
int m;
vector<int> v;
void dfs(int i){
if(m==3){
for(int k=0;k<3;k++)
cout<<v[k]<<" ";
cout<<endl;
return;
}
//不加上这一句会继续往上进行搜索dfs(5)之类的
//而且这句不能放在上个if之上
if(i>=5)
return;
if(!visited[i]){
visited[i]=true;
m++;
v.push_back(a[i]);
dfs(i+1);
v.pop_back();
m--;
visited[i]=false;
}
dfs(i+1);
}
int main(){
memset(visited,false,sizeof(visited));
m=0;
dfs(0);
return 0;
}
从5个数中选择三个数的回溯算法
最新推荐文章于 2023-12-18 22:11:58 发布