• Codeforces Round #313 (Div. 1) B. Equivalent Strings DFS暴力


    题目链接:

    http://codeforces.com/contest/559/problem/B

    题意:

    判断俩字符串是否相似,相似的条件如下:
    a1+a2=A,a1和a2都是A的一半
    b1+b2=B,同理
    如果A,B相等,那么相似
    如果A的长度为偶数{
      如果a1与b1,a2与b2相似或者a1与b2,b1与a2相似
      那么A,B相似
    }
    否则不相似

    题解:

    dfs

    代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define MS(a) memset(a,0,sizeof(a))
     5 #define MP make_pair
     6 #define PB push_back
     7 const int INF = 0x3f3f3f3f;
     8 const ll INFLL = 0x3f3f3f3f3f3f3f3fLL;
     9 inline ll read(){
    10     ll x=0,f=1;char ch=getchar();
    11     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    12     while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    13     return x*f;
    14 }
    15 //////////////////////////////////////////////////////////////////////////
    16 const int maxn = 2e5+10;
    17 
    18 char s1[maxn],s2[maxn];
    19 
    20 bool check(char x[],char y[],int len){
    21     bool isok = 1;
    22     for(int i=0; i<len; i++)
    23         if(x[i]!=y[i])
    24             isok = 0;
    25     return isok;
    26 }
    27 
    28 bool equ(char x[],char y[],int len){
    29     if(check(x,y,len)) return 1;
    30 
    31     if(len%2 == 0)
    32         return (equ(x,y+len/2,len/2)&&equ(x+len/2,y,len/2)) ||
    33                 (equ(x+len/2,y+len/2,len/2)&&equ(x,y,len/2));
    34     return 0;
    35 }
    36 
    37 int main(){
    38     cin >> s1 >> s2;
    39     if(equ(s1,s2,strlen(s1))) puts("YES");
    40     else puts("NO");
    41 
    42     return 0;
    43 }
  • 相关阅读:
    2014-04-23 总结
    14-5-13
    PHP
    14-5-8
    ajax
    14-5-6
    14-5-5
    PHP初解
    14-4-30
    14-4-29
  • 原文地址:https://www.cnblogs.com/yxg123123/p/6827679.html
Copyright © 2020-2023  润新知