代码如下,本体需要用到的知识有字符串,函数。
首先我们需要要一个子函数帮助我们判断字符串是否是01010101....或101010.....,如果不是则跳出循环,输出重复的数字对应·的下标。
在主函数中,我们需要判断第一个字符串是否为魔数,是的话直接输出YES,不需要进行任何操作。如果不是,我们需要判断第二个数是否为魔数且是否首尾字母是否一致,是的话进行插入操作(进行循坏前,需判断插入的字母和被插入的字母是否不一致), 不是的话直接输出NO
#include<iostream>
using namespace std;
int str(string k)
{
int i=0,j=k.length(),flag=0;
for(i=0;i<j-1;i++)
{
if(k[i+1]==k[i])
{
flag=1;
break;
}
}
if(flag==1)
{
return i;
}
else
{
return -1;
}
}
int main()
{
int n,i;
cin>>n;
int a,b;
string c,d;
for(i=0;i<n;i++)
{
cin>>a>>b>>c>>d;
if(str(c)==-1)
{
cout<<"YES"<<endl;
}
else
if(str(d)!=-1||d[0]!=d[b-1])
{
cout<<"NO"<<endl;
}
else
{
while(1)
{
if(d[0]==c[str(c)])
{
cout<<"NO"<<endl;
break;
}
else
{
c.insert(str(c)+1,d);
if(str(c)==-1)
{
cout<<"YES"<<endl;
break;
}
}
}
}
}
return 0;
}