站外题: 奶牛们为了打发时间,想出了一个游戏来玩。第一只奶牛说出一个只含有3个小写字母的在单词表里的单词,接下来的每只奶牛必须在上一个单词里加入一个字母(可以加在头、尾或中间),使得成为的新单词是能在单词表里找到的。他们想知道最后得到的单词有多长。 给出含有D(D<=1000)个单词的单词表,请找出他们最后能得到的最长的单词。
70分求调 代码如下
#include<bits/stdc++.h>
using namespace std;
int n,t,ma;
string s,a[10005],p[10005],y;
bool cmp(string s1,string s2){
return s1.size()<s2.size();
}
int main(){
cin>>n>>s;
p[++t]=s;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
for(int j=0;j<a[i].size();j++){
string s=a[i].substr(0,j)+a[i].substr(j+1,a[i].size()-i-1);
for(int k=1;k<=n;k++){
if(a[k]==s){
p[++t]=a[i];
break;
}
}
}
}
cout<<p[t];
return 0;
}