繁体   English   中英

为什么cal函数总是返回真值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM