求助一道ACM题,报错Runtime Error SIGSEGV
http://acm.tju.edu.cn/toj/showp1401.html这个是题目网址这是代码:#include<iostream>#include<string...
http://acm.tju.edu.cn/toj/showp1401.html这个是题目网址
这是代码:
#include <iostream>
#include <string.h>
using namespace std;
int main(){
char s[10000],c[10000];
while(cin>>s>>c){
int x=0;bool a=1;
for(int i=0;i<strlen(s);i++){
if(strlen(s)>strlen(c)){a=0;break;}
if(x==strlen(c)){a=0;break;}//下面的x=j+1可能会使得x==strlen(c)不能进入循环;例如输入need和nede
for(int j=x;j<strlen(c);j++){
if(s[i]==c[j]){x=j+1;break;}//如果找到相同的元素,则下次从j+1的点开始查找
if(j==strlen(c)-1&&i<strlen(s)-1){a=0;break;}//c查找到了最后一个元素,而s还没有
if(j==strlen(c)-1&&s[i]!=c[j]){a=0;break;}//c s都到了最后一个元素,但是却不相等
}
}
if(a==1)cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}
报错Runtime Error SIGSEGV
求告知到底哪里有问题 谢谢~~~ 展开
这是代码:
#include <iostream>
#include <string.h>
using namespace std;
int main(){
char s[10000],c[10000];
while(cin>>s>>c){
int x=0;bool a=1;
for(int i=0;i<strlen(s);i++){
if(strlen(s)>strlen(c)){a=0;break;}
if(x==strlen(c)){a=0;break;}//下面的x=j+1可能会使得x==strlen(c)不能进入循环;例如输入need和nede
for(int j=x;j<strlen(c);j++){
if(s[i]==c[j]){x=j+1;break;}//如果找到相同的元素,则下次从j+1的点开始查找
if(j==strlen(c)-1&&i<strlen(s)-1){a=0;break;}//c查找到了最后一个元素,而s还没有
if(j==strlen(c)-1&&s[i]!=c[j]){a=0;break;}//c s都到了最后一个元素,但是却不相等
}
}
if(a==1)cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}
报错Runtime Error SIGSEGV
求告知到底哪里有问题 谢谢~~~ 展开
展开全部
#include <iostream>
#include <string.h>
using namespace std;
char s[100010],c[100010];//把大数组开到main函数外面,防止RE
int main(){
int lens,lenc;
while(cin>>s>>c){
lens=strlen(s);//用一个变量来存储字符串s和c的长度,节省时间
lenc=strlen(c);
int x=0;bool a=1;
for(int i=0;i<lens;i++){
if(lens>lenc)
{a=0;break;}
if(x==lenc)
{a=0;break;}
//下面的x=j+1可能会使得x==strlen(c)不能进入循环;例如输入need和nede
for(int j=x;j<lenc;j++){
if(s[i]==c[j]){x=j+1;break;}//如果找到相同的元素,则下次从j+1的点开始查找
if(j==lenc-1&&i<lens-1){a=0;break;}//c查找到了最后一个元素,而s还没有
if(j==lenc-1&&s[i]!=c[j]){a=0;break;}//c s都到了最后一个元素,但是却不相等
}
}
if(a==1)cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询