这题好像有问题
查看原帖
这题好像有问题
478366
XIYOU_楼主2021/4/5 14:27

第4个测试点和第6个测试点一直出错,在加注释代码之前,第4和第6个测试点错误,下载了第4个测试点代码输入是2047个A,输出是1,于是我加了如下注释代码,结果第6个测试点错误了,修改代码和注释代码后输入2047个A,输出2047而不是1反而全AC了,这是什么原理

#include<cstring>
using namespace std;
int len;//记录数组长度
char s[100001];    //输入数组
int fun(int length){      //照镜子,假设照的是右面
    //int flag1=0;
    //for(int i=0; i<length-1; i++)      //判断是否全都是相同的字符
    //{
    //  if(s[i]!=s[i+1]) flag1=1;       //说明不是都是相同字符串
    //}
    //if(flag1==0){         //是相同字符
    //  return 1;
    //}
    if(length%2!=0){        //如果不是偶数,即输出最短长度
        return length;
    }
    int ban=length/2;
    int flag=0;
    for(int i=0; i<ban; i++){
        if(s[i]!=s[length-i-1]){       //如果不相等
            flag=1;       //跳出循环
            break;
        }
    }   
    if(flag==1){
        return length;
    }
    else return fun(ban);
}
int main(){
    scanf("%s",s);
    len=strlen(s);
    int ans=fun(len);
    printf("%d",ans);
    return 0;
}
2021/4/5 14:27
加载中...