c语言oj运行时错误,大佬们,帮初入门小菜吧,本地能运行,在oj上运行显示运行时错误...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这道题熟悉一些对string操作的函数的使用之后 ,我思路蛮清晰。自己编写的程序,在本地成功运行,也测试了好多组数据。但是本人可能 还是太年轻,欠缺经验。。。编写程序习惯不良好,一些细节没注意,导致提交到oj上去,显示运行时错误。我自己又找不到问题。。。跪求大佬帮忙看看

题目描述:

给出一些由英文字符组成的大小写敏感的字符串的集合s,请找到一个最长的字符串x,使得对于s中任意字符串y,x或者是y的子串,或者x中的字符反序之后得到的新字符串是y的子串。

输入描述:

输入的第一行是一个整数t (1<=t<=10),t表示测试数据的数目。对于每一组测试数据,第一行是一个整数n (1<=n<=100),表示已经给出n个字符串。接下来n行,每行给出一个长度在1和100之间的字符串。

输出描述:

对于每一组测试数据,输出一行,给出题目中要求的字符串x的长度。

样例输入:

2

3

ABCD

BCDFF

BRCD

2

rose

orchid

样例输出:

2

2

提示:

用于反转字符串的 strrev 函数属于非标准函数,OJ 编译器不予支持。

#include

#include

#include

using namespace std;

int n, m,minN, MinL;

string a[1005];

int search(string b) {/*遍历最短字符串中的子串,输出最长公共子串的长度*/

int flag=0;

int flag2=0;

string subStr,RsubStr;

int ML=MinL;

while(MinL>=1){

for(int i=0; i<=ML-MinL; i++){/*遍历出所有子串,并进行反转*/

subStr=b.substr(i,MinL);

RsubStr=subStr;

reverse(RsubStr.begin(),RsubStr.end());

flag=1;

for(int j=0; j

if(string::npos==a[j].find(subStr)&&string::npos==a[j].find(RsubStr))

flag=0;

}

if(flag){/*符合上述条件时,退出第一层循环*/

flag2=1;

break;

}

}

if(flag2)/*退出第二层循环 */

break;

MinL--;

}

cout<

}

int main() {

while(cin>>n) {

while(n--) {

MinL=100;

cin>>m;

for(int i=0; i

cin>>a[i];

if(MinL>a[i].length() ) { /*找到字符串中最短的一个*/

MinL=a[i].length() ;

minN=i;

}

}

search(a[minN]);/*遍历最短字符串中的子串,输出最长公共子串的长度*/

}

}

return 0;

}

麻烦大家帮我看看,十分感谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值