题目描述
为什么有while(len)会超时啊,没有她结果是不对的呀
样例
#include<iostream>
using namespace std;
int main()
{
int n,i,j;
string s[201];
while(cin>>n,n)
{
int len=1000;
for(i=0;i<n;i++)
{
cin>>s[i];
if(s[i].size()<len)len=s[i].size();//输入字符串,并且计算每个字符串的长度,用len保存最短的字符串长度
}
while(len)
{
bool success=true;
for(int i=1;i<n;i++)
{
bool is_same=true;
for(j=1;j<=len;j++)
{
if(s[0][s[0].size()-j]!=s[i][s[i].size()-j])//说明len太长了,len得--
{
is_same=false;
break;//结束这个循环就行了,无需判断j++到len-1了
}
if(!is_same)
{
success=false;
break;
}
}
if(success)break;//最终若果success是true,那就找到了正确的len的长度了,break就行了;
len--;
}
cout<<s[0].substr(s[0].size()-len)<<endl;//最终输出用substr,他就是从第几个数输到第几个数,没有0,;起点,终点;如果想输到最后,不用写终点!
}
}
return 0;
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla