题意是输出不作为任何已知字符串的子串当中字典序最小的子串,一个关键的地方是应该学会头文件#include<queue>的使用。queue的基本操作有:
1.入队 如q.push(x);将x接到队列的末端;
2.出队 如q.pop();弹出队列的第一个元素,注意,并不会返回被弹出元素的值;
3.访问队首元素 如q.front();即最早被压入队列的元素;
4.访问队末元素 如q.back();即最先被压入队列的元素;
5.判断队为空 如q.empty();当队列空时,返回true;
6.访问队列中的元素个数 如q.size()。
#include <iostream> #include<string> #include<queue> using namespace std; int n, t; string s[31]; bool present(string cur) { for (int i = 0; i < n; i++) if (s[i].find(cur) != string::npos) return true; return 0; } string bfs() { queue<string> Q; Q.push(""); while (!Q.empty()) { string cur = Q.front(); //cout << cur << endl; Q.pop(); if (!present(cur)) return cur; for (char c = 'a'; c <= 'z'; c++) { string to = cur + c; cout << to << " "; Q.push(to); } } } int main() { cin>>n; for (int i = 0; i < n; i++) cin >> s[i]; cout <<bfs()<< endl; return 0; }
其实这道题的代码不是我自己写的,别人给归类到bfs。