Codeforces Round #170 (Div. 2)B

B. New Problem

题意是输出不作为任何已知字符串的子串当中字典序最小的子串,一个关键的地方是应该学会头文件#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。

原文地址:https://www.cnblogs.com/jzwong/p/4360913.html