接龙游戏
来源:互联网 发布:怎么申请做淘宝卖家 编辑:程序博客网 时间:2024/04/29 08:39
题目描述 Description
给出了N个单词,已经按长度排好了序。如果某单词i是某单词j的前缀,i->j算一次接龙(两个相同的单词不能算接龙)。
你的任务是:对于输入的单词,找出最长的龙。
输入描述 Input Description
第一行为N(1<=N<=105)。以下N行每行一个单词(由小写组成),已经按长度排序。(每个单词长度<50)
输出描述 Output Description
仅一个数,为最长的龙的长度。
样例输入 Sample Input
5
i
a
int
able
inter
样例输出 Sample Output
3
数据范围及提示 Data Size & Hint
1<=N<=10^5
思路
这个题首先想到的是DP,但是数据范围是100000,显然不科学。
枚举每一个字符串显然也不科学。
但是。C++党表示还有一种叫做sort的东西。
使用快排对字符串进行排序。那么对于这个题来说前缀相同的字符串都在一起。
等等,我们好像发现了什么。没错!此题目能接起来的条件就是前缀!
所以我们利用一个叫做栈的神奇的东西,通过维护每一种前缀的最长长度取max来得到答案。
代码如下
#include <string>#include <algorithm>#include <iostream>#include <stack>using namespace std;typedef struct data{string s;}data;bool cmp(data x,data y){int len = x.s.length() < y.s.length() ? x.s.length(): y.s.length();for(int i = 0; i < len; i++){if(x.s[i] < y.s[i])return true;else if(x.s[i] > y.s[i])return false;}if(x.s.length() < y.s.length())return true;else return false;}data ch[100007];int main(){int n;cin>>n;for(int i = 0; i < n; i++)cin>>ch[i].s;sort(ch,ch+n,cmp);stack<data> mystatck;int max = 1;mystatck.push(ch[0]);data tmp;for(int i = 1; i < n; i++){tmp = mystatck.top();if(ch[i].s.find(tmp.s,0) == 0){if(tmp.s.length() != ch[i].s.length())mystatck.push(ch[i]);}else{while( !mystatck.empty()){tmp = mystatck.top();if(ch[i].s.find(tmp.s,0) == 0)break;mystatck.pop();}mystatck.push(ch[i]);}max = max > mystatck.size() ? max : mystatck.size();}cout<<max<<endl;return 0;}
0 0
- 接龙游戏
- 接龙游戏
- 成语接龙游戏网址
- CODEVS-1051 接龙游戏
- 【codevs1051】接龙游戏 栈
- 接龙游戏 [Codevs 1051]
- Codevs 1051 接龙游戏
- 【codevs 1051】接龙游戏
- 1051 接龙游戏
- Codevs 1051 接龙游戏
- codevs1051接龙游戏
- Codevs 1051 接龙游戏
- 游戏更新-空当接龙-Android
- wiki oi 1051 接龙游戏
- codevs1051 接龙游戏(栈模拟)
- Java成语接龙游戏小项目实战
- [接龙游戏]看台词~猜电影~做游戏~
- 接龙游戏,你敢回答楼下提出的问题吗
- 越狱状态下获取设备上已安装的app和icon
- Code Forces 584 C. Marina and Vasya(水~)
- 学习HTML:iframe用法总结收藏
- MSSQL中整理索引碎片的存储过程
- JavaSE8-The New Date and Time API(2)
- 接龙游戏
- git stash
- SRM 669 DIV 2 CombiningSlimes 500-point
- Android新增一个emmc 上层的实现
- nexus无法启动
- 2015年第三季度总结
- highcharts画阶梯图线(Step)阶跃信号之类
- oracle10g,11g,12c dataguard 物理备库操作系统平台异构支持表
- C#之结构、枚举和运算符