#include<iostream>
#include<algorithm>
using namespace std;
#include<vector>
#include<string>
#include<set>
void processing(vector<string>arr,set<int>&used,string path,vector<string>&ans){
if (used.size() == arr.size()) {
ans.push_back(path);
return;
}
for (int i = 0; i < arr.size(); i++) {
if (!count(used.begin(), used.end(), i)) {
used.insert(i);
processing(arr, used, path + arr[i], ans);
used.erase(i);
}
}
}
int main() {
vector<string>arr = { "ad", "b", "c" };
set<int>used;
string path = "";
vector<string>ans;
processing(arr,used,path,ans);
for (string str : ans) {
cout << str << " ";
}
cout << endl;
system("pause");
return 0;
}
全排列回溯法
最新推荐文章于 2022-09-18 11:42:08 发布