您的位置:首页 > 其它

网易游戏笔试题

2015-09-21 07:32 288 查看
该题目的要求是判断str1和str2能否归并成为str3,递归的思路是正确的
boolhelper(string&str_x,string&str_y,intx,inty){
while(x<str_x.size()&&y<str_y.size()){
if(str_x[x]==str_y[y]){
++x;
++y;
}
else{
returnfalse;
}
}
if(x==str_x.size()&&y==str_y.size())
returntrue;
else
returnfalse;
}
boolhelper(string&str1,string&str2,string&str3,intm,intn,intk){

if(m==str1.size()){
returnhelper(str2,str3,n,k);
}
elseif(n==str2.size()){
returnhelper(str1,str3,m,k);
}
elseif(k==str3.size()){
returnfalse;
}
else{
if(str1[m]==str3[k]&&str2
!=str3[k])
returnhelper(str1,str2,str3,m+1,n,k+1);
elseif(str1[m]!=str3[k]&&str2
==str3[k])
returnhelper(str1,str2,str3,m,n+1,k+1);
else
returnhelper(str1,str2,str3,m+1,n,k+1)||helper(str1,str2,str3,m,n+1,k+1);
}
}
intmain(){
intnums;
cin>>nums;
stringstr1,str2,str3;
for(inti=0;i<nums;++i){
cin>>str1>>str2>>str3;
intm=0,n=0,k=0;//m,n分别指向str1和str2的第0个元素
cout<<helper(str1,str2,str3,0,0,0)<<endl;
}
return0;
}

下面附上原来的错误代码


intmain(){//str1:bcfstr2:acdestr3:abcdcef
intnums;
cin>>nums;
stringstr1,str2,str3;
for(inti=0;i<nums;++i){
cin>>str1>>str2>>str3;
intm=0,n=0,k=0;//m,n分别指向str1和str2的第0个元素
boolflag=true;
while(m<str1.size()&&n<str2.size()&&k<str3.size()){
if(str1[m]==str3[k]){
++m;
++k;
}
elseif(str2
==str3[k]){
++n;
++k;
}
else{
flag=false;
break;
}
}
while(m<str1.size()&&k<str3.size()){
if(str1[m]==str3[k]){
++m;
++k;
}
else{
flag=false;
break;
}
}
while(n<str2.size()&&k<str3.size()){
if(str2
==str3[k]){
++n;
++k;
}
else{
flag=false;
break;
}
}

if(m==str1.size()&&n==str2.size()&&k==str3.size())
cout<<flag<<endl;
else
cout<<0<<endl;
}
return0;
}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: