题目名字
题意
x
思路
- 判断字符串的长度是否为偶数
- 判断是否为回文数
- 输出最小长度
代码
#include<bits/stdc++.h>
using namespace std;
bool huiwen(char s[]){
bool r=true;
for(int i=0;i<strlen(s)/2;i++)
{
if(s[i]!=s[strlen(s)-i-1]){
r=false;
break;
}
}
return r;
}
int main(){
char s[10000];
gets(s);
while(huiwen(s)==true&&strlen(s)%2==0)
{
s[strlen(s)/2]='\0';
}
cout<<strlen(s)<<endl;
return 0;
}
代码
#include<bits/stdc++.h>
using namespace std;
char a[1000010];//利用a来进行存储原始的排列顺序。
int ans=0;//ans用来记录分解的次数。
void fn(int r)//递归操作
{
int mid=r/2;//进行分解,对半
if(r%2==1){
//如果分解后发现是奇数则不能再分解直接输出并返回
cout<<r;
return;
}
else{
for(int i=0,j=r-1;i<mid;i++,j--){
//这里i从第一个数开始,j从最后一个开始往内前进
if(a[i]!=a[j]){
cout<<r;
return;
//发现如果有不同的数则输出并返回
}
}
}
ans++;//计数
fn(mid);//递归操作,再判断1~mid是否可以再分解
}
int main()
{
gets(a);
int len=strlen(a);//输出字符串的长度
fn(len); //递归
return 0;
}
总结
回文数判断