单词接龙
来源:互联网 发布:网络机顶盒性价比 编辑:程序博客网 时间:2024/04/29 05:13
单词接龙
拉姆刚开始学习英文单词,对单词排序很感兴趣。
如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。
你能编写一个程序来帮助拉姆进行判断吗?
如果给拉姆一组单词,他能够迅速确定是否可以将这些单词排列在一个列表中,使得该列表中任何单词的首字母与前一单词的为字母相同。
你能编写一个程序来帮助拉姆进行判断吗?
输入描述:
输入包含多组测试数据。 对于每组测试数据,第一行为一个正整数n,代表有n个单词。 然后有n个字符串,代表n个单词。 保证: 2<=n<=200,每个单词长度大于1且小于等于10,且所有单词都是由小写字母组成。
输出描述:
对于每组数据,输出"Yes"或"No"
输入例子:
3 abc cdefg ghijkl 4 abc cdef fghijk xyz
输出例子:
Yes No
#include<iostream>#include<string>#include<queue>using namespace std;int canArrangeWords(int num, string* arr){if (num<1 || num>100)return -1;queue<string> qs;for (int i = 0; i < num; i++){qs.push(arr[i]);int len = arr[i].size();if (len<2 || len>100)return -1;}int count = 1;int count1 = 0;char head = qs.front().at(0);char end = qs.front().at(arr[0].size() - 1);qs.pop();while (!qs.empty() && (count + count1 <= num)){int len = qs.front().size();if (qs.front().at(0) == end){end = qs.front().at(len - 1);qs.pop();count++;}else if (qs.front().at(len - 1) == head){head = qs.front().at(0);qs.pop();count++;}else{qs.push(qs.front());qs.pop();count1++;}}if (count == num)return 1;return -1;}int main(){int num;while (cin >> num){getchar();string *s = new string[num];for (int i = 0; i < num;i++){getline(cin,s[i]);}int res = canArrangeWords(num,s);if (res == 1)cout << "YES" << endl;elsecout << "No" << endl;}}
1 0
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 单词接龙
- 邮票封面设计 单词接龙
- [NOIP2000]单词接龙
- logstash 处理tomcat日志
- lk中的timer
- 树的子结构
- Hubot 脚本初试:自动翻译 + 端口查询
- 单例模式(Singleton)
- 单词接龙
- 27. Remove Element
- Visual Stdio C++ 编译器 编译 (GSL) GNU Scientific Library 的方法介绍(7)
- 云平台选型的思考
- ORACLE 从一个实例迁移到另外一个实例实战记录
- 数据库
- SoundPool播放音效
- tcp连接flags详解
- ObjectC快速入门教程(2)---字符串