Equivalent Strings
生活随笔
收集整理的這篇文章主要介紹了
Equivalent Strings
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84562#problem/A
題意:
? ? ?判斷字符串是否相等,有以下兩種情況任意一種就想等
? ? ?1)它們是完全相等的。
? ? ?2)把字符串a分離為兩個長度相等的字符串a1,a2,字符串b也同樣分為兩個長度相同的字符串b1,b2,以下兩種情況任意一種就想等
? ? ? ? ? ? ? ? ? (1)a1與b1相等,a2與b2相等。
? ? ? ? ? ? ? ? ? (1)a1與b2相等,a2與b1相等。
? ? ?輸入的兩個字符串長度一定是相等的。兩個字符串相等,輸出YES,否則,輸出NO。
? ? ?案例:
? ? ? input
? ? ? aaba
? ? ? abaa
? ? ? output
? ? ? YES
思路分析:
? ? ? ?當字符串的長度為奇數時,要判斷整個字符串是否完全相等,當字符串長度為偶數時,就要把它分為長度相等的兩部分,再一次判斷是否為奇數。。。。。
? ? ? ?剛開始定義的是string類,但是很難寫下去,建議用char型,定義數組。
源代碼如下:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define maxn 200000 5 using namespace std; 6 char a[maxn],b[maxn]; 7 int DO(char *a,char *b,int l) 8 { int t; 9 if(l%2!=0) //長度為奇數判斷 10 { 11 t=0; 12 for(int i=0;i<l;i++) 13 if(a[i]!=b[i]) 14 t++; 15 if(!t) 16 return 1; 17 else 18 return 0; 19 } 20 21 else 22 { 23 if((DO(a,b,l/2)&&DO(a+l/2,b+l/2,l/2))||(DO(a,b+l/2,l/2)&&DO(a+l/2,b,l/2)))//長度為偶數判斷 24 return 1; 25 else 26 return 0; 27 } 28 } 29 int main() 30 { 31 int len; 32 scanf("%s%s",a,b); 33 len=strlen(a); 34 if(DO(a,b,len)) 35 cout<<"YES"<<endl; 36 else 37 cout<<"NO"<<endl; 38 return 0; 39 }
?
轉載于:https://www.cnblogs.com/q-c-y/p/4683197.html
總結
以上是生活随笔為你收集整理的Equivalent Strings的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse下如何导入jar包
- 下一篇: Reporting Services 的