题目名字
国王的魔镜
题目链接
https://www.luogu.com.cn/problem/P2799?contestId=147354
题意
对称的魔镜 镜子找出来的数字顺序应该对此且为轴对称,然后根据题目意思求解
思路
- 递归
代码
#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);
char t;
int len=strlen(a);//strlen(字符数组名)是输出字符串的长度
fn(len); //递归
}