文章
8
粉丝
14
获赞
1
访问
7.2k
按照这个回溯法的模板来吧(DFS也是这个模板)
result = []
def backtrack(路径, 选择列表):
if 满足结束条件:
result.add(路径)
return
for 选择 in 选择列表:
做选择
backtrack(路径, 选择列表)
撤销选择
#include<bits/stdc++.h>
using namespace std;
vector<vector<char>> res;
int used[6];
vector<char> t;
void backTrace(string s) {
if(t.size() == s.length()) {
res.push_back(t);
return;
}
for(int i = 0; i < s.size(); i++) {
if(used[i] == 0) {
t.push_back(s[i]);
used[i] = 1;
backTrace(s);
t.pop_back();
used[i] = 0;
}
}
}
int main()
{
string s;
cin >> s;
backTrace(s);
for(int i = 0; i < res.size(); i++) {
auto vi = res[i];
for(int i = 0; i < vi.size(); i++)
cout << vi[i];
cout << endl;
}
return 0;
}
登录后发布评论
暂无评论,来抢沙发