'commit'
This commit is contained in:
45
TangDou/LanQiaoBei/LanQiao14STEMA202208/3_2.cpp
Normal file
45
TangDou/LanQiaoBei/LanQiao14STEMA202208/3_2.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include <bits/stdc++.h>
|
||||
|
||||
using namespace std;
|
||||
const int N = 26;
|
||||
// acdaccdd
|
||||
unordered_set<char> S; //有哪些字符
|
||||
bool st[N]; //是不是使过了
|
||||
string res; //结果,字典序最小
|
||||
string s; //原始串
|
||||
string t;
|
||||
void dfs(int u) {
|
||||
//出口
|
||||
if (u == s.size()) {
|
||||
if (t.size() == S.size())
|
||||
if (t < res) res = t; // t<res
|
||||
return;
|
||||
}
|
||||
//没有使过
|
||||
if (!st[s[u] - 'a']) {
|
||||
//使上
|
||||
st[s[u] - 'a'] = true;
|
||||
t.push_back(s[u]);
|
||||
//下一个
|
||||
dfs(u + 1);
|
||||
//回溯
|
||||
t.pop_back();
|
||||
st[s[u] - 'a'] = false;
|
||||
}
|
||||
//使过或者没使过但不想使,都走这条路径
|
||||
dfs(u + 1);
|
||||
}
|
||||
|
||||
int main() {
|
||||
//初始化极大值
|
||||
for (int i = 0; i < 200; i++) res = res + 'z';
|
||||
//读入字符串
|
||||
cin >> s;
|
||||
//去重形成一个集合
|
||||
for (int i = 0; i < s.size(); i++) S.insert(s[i]);
|
||||
//深搜
|
||||
dfs(0);
|
||||
//输出
|
||||
cout << res << endl;
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user