题目描述
对于一个0,1串s, 从左端开始读取它的0获得序列s0,从右端开始读取它的1获得s1,如果s0与s1同构,则称s为倍流畅序列.
例如:
011001是一个倍流畅序列, 因为:
s0 = 0__00_
s1 = 1__11_
而101不是, 因为:
s0 = _0_
s1 = 1_1
下面的问题是:对于一个0、1串s, 在s后添加最少数目的0或1,使它成为一个倍流畅序列。
输入
有多组输入数据,第一行为一个数字T,代表有T组输入数据 (0<T<=100)。
接下来为T组数据,每组数据占一行,包含一个长度不超过50的0、1串。
输出
一共T行。
对于每组数据,在一行上输出添加了最少数目的0或1后所得到的倍流畅序列。
#include<cstdio> #include<cstring> int len,T; char s[55],t[55]; bool check(int x) { for(int i=x;i<len;i++){ if(s[i]!=t[i-x]) return false; } return true; } int main() { scanf("%d",&T); while(T--){ scanf("%s",s); len=strlen(s); for(int i=0;i<len;i++){ if(s[i]=='0') t[len-1-i]='1'; else t[len-1-i]='0'; } t[len]='