【瞎搞】ZOJ 3818 Pretty Poem 牡丹江网络赛J题


第一种情况:ABABA。 先判断开头的A与结尾的A,得到A的长度,接着判断ABAB 中的AB与AB是否相同(ABAB的长度一定为偶数)

已经知道了A长度,AB的长度 接着判断下A 与B是否相同

第二种情况:ABABCAB-可先讲AB看成整体即DDCD 若存在一个D满足条件 可得到C的长度和位置再判断A-B是否相同A-C是否相同 B-C是否相同(暴力取A的长度咯)

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
#include 
#include 
#include 
#include 
#include 
#include 
#define cler(arr, val)    memset(arr, val, sizeof(arr))
#define IN     freopen ("in.txt" , "r" , stdin);
#define OUT  freopen ("out.txt" , "w" , stdout);
typedef long long  LL;
const int MAXN = 1000006;//点数的最大值
const int MAXM = 20006;//边数的最大值
const int INF = 11521204;
const int mod=1000000007;
char s[222];
char out[222];
bool jug(char c)
{
    if(('a'<=c&&c<='z')||('A'<=c&&c<='Z'))
        return 1;
    else return 0;
}
int main()
{
    int t;
   // IN;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s",s);
        int len=strlen(s),n=0;
        for(int i=0; i0)
            {
                int xx=n-3*j;
                for(int w=1; w=2*j-xx&&k>=j+w; k--) //判断b与c是否相同
                    {
                        if(out[k]==out[k+xx])
                            sum2++;
                    }
                    if(sum==w&&sum==j-w) flag11=1;
                    if(sum1==xx&&sum1==w) flag11=1;
                    if(sum2==xx&&sum2==j-w) flag11=1;
                    if(!flag11)
                        flag=1;
                }
            }
        }
        if(flag==1)
            printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}
/*
8
xyxyxxy
xyxyyxy
xxxxyxx
xxxxx
xyxyx
xxxxxxxx
xxxxxxxxxxxxx
xyzzxyzxyzzxyzxyzxyzzxyz
no
no
no
no
yes
yes
yes
yes
*/


你可能感兴趣的:(瞎搞)