链接:https://codeforces.com/problemset/problem/1536/B
题目大意:给你一个字符串,找出最小字典序的没有出现过的子串;
题解:按题意写,先把所有子串存起来,然后遍历所有字符串,找出那个子串(朴实无华)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
set<string> cun;
queue<string> a;
string ans;
void bfs()
{
string x;
a.push(x);
while (!a.empty())
{
string temp = a.front();
a.pop();
if (cun.find(temp) == cun.end() && temp.size() != 0)
{
ans = temp;
return;
}
for (int i = 0; i < 26; i++)
{
string t = temp + char('a' + i);
a.push(t);
}
}
return;
}
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cun.clear();
int b;
cin >> b;
string s;
cin >> s;
for (int j = 0; j < s.size(); j++)
{
for (int k = 1; k + j <= s.size(); k++)
{
string t;
t = s.substr(j, k);
cun.insert(t);
}
}
bfs();
cout << ans << endl;
while (!a.empty())
{
a.pop();
}
}
}