求助一道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
求告知到底哪里有问题 谢谢~~~
展开
 我来答
军天下wolfer
推荐于2016-04-03 · TA获得超过2081个赞
知道小有建树答主
回答量:734
采纳率:100%
帮助的人:943万
展开全部
#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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式