这几天军训,重刷了几道二分。之前考试的题等重新ak了再写总结吧。
8.20.
今天写了道递归,非常简单,但是对字符相关还是太不熟了……
luogu2799.
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
不过不懂的是,这个程序用string会运行时错误。
#include<bits/stdc++.h>
using namespace std;
char xl[100020]="";
int ans=0;
void Mojing(char xlian[100020])
{
int Left=0,Right=strlen(xlian)-1;
bool flag=true;
if(strlen(xlian)%2==1)
{
ans=strlen(xlian);return;
}//若长度为奇数则结束。
while(Left<=(strlen(xlian)/2-1))
{
if(xlian[Left]!=xlian[Right])
{
flag=false;break;
}
Left++;Right--;
}//判断回文。
if(flag==true)
{
ans=strlen(xlian)/2;
char xlian2[50020];
for(int j=0;j<=ans-1;j++)
{
xlian2[j]=xlian[j];
}
Mojing(xlian2);
}//若是回文,存储当前字符串前一半继续递归。
else
{
ans=strlen(xlian);return;
}//若不是,结束。
}
int main()
{
scanf("%s",&xl);
Mojing(xl);
printf("%d",ans);
return 0;
}
8.21.
继续递归。
luogu2089。
猪猪Hanke特别喜欢吃烤鸡(本是同畜牲,相煎何太急!)Hanke吃鸡很特别,为什么特别呢?因为他有10种配料(芥末、孜然等),每种配料可以放1—3克,任意烤鸡的美味程度为所有配料质量之和
现在,Hanke想要知道,如果给你一个美味程度,请输出这10种配料的所有搭配方案。
#include<bits/stdc+