[英]Why does cal function always return true value?
当输入为pos时,期望cal函数返回false。 但是校准函数总是返回true。
#include <bits/stdc++.h>
using namespace std;
bool cal(string s)
{
int l=s.size();
if(l==1)
return false;
int l2=l/2;
if(l%2==0)
{
string s1=s.substr (0,l2);
string s2=s.substr(l2,l2);
if(s1==s2)
return true;
cal(s1);
cal(s2);
}
else
{
string s1=s.substr (0,l2);
string s2=s.substr(l2+1,l2);
if(s1==s2)
return true;
cal(s1);
cal(s2);
}
}
int main()
{
int t;
cin>>t;
while(t--)
{
string s;
cin>>s;
bool a;
a=cal(s);
if(a==true)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
在您的两个逻辑路径中,调用cal(s1)并丢弃该值,然后调用cal(s2)并类似地忽略返回值。 因此,您返回的是您未明确订购的东西。 我希望这是cal(s2)的附带值。
您对s1!= s2的那些分支打算做什么?
我不确定您要做什么? 变量名受阻且注释不清,使我们猜测您要执行的操作。 为什么pos (无论您是什么意思)输入都返回false?
另外,您的代码中可能存在逻辑错误。 您似乎正在尝试将字符串分成两半; 您打算丢失奇数长度字符串的中间字符吗?
string s1=s.substr (0,l2);
string s2=s.substr(l2+1,l2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.