HDU 4357
這道題寫起來沒難度,但這種題確實很難,這種字符串的題難在證明。以后也要注意。
奇偶性不同的字符串肯定不能轉換,因為每一次交換都是字符串的和增加2。
當字符串長度為2時,可以模擬交換,最多26次。
否則,任選三個字母(x1,x2,x3)->(x1+1,x2,x3+1)......(1)
而且還有(x1,x2,x3)->(x1+2,x2,x3).....(2)
對于第一種變換,可以變換到至多只有一個字母不符合的情況,由于字符串奇偶性相同,則該字母相差為偶數,可以通過第二種變換得到。
#include <iostream> #include <string.h> #include <cstring> #include <cstdio> using namespace std;char s1[70],s2[70];int main(){int T,t=0;char tmp;scanf("%d",&T);while(++t<=T){scanf("%s",s1);scanf("%s",s2);int len=strlen(s1);printf("Case #%d: ",t);if(len==2){int i;for(i=0;i<26;i++){tmp=s1[1];s1[1]=s1[0];s1[0]=tmp;s1[0]=(s1[0]-'a'+1)%26+'a';s1[1]=(s1[1]-'a'+1)%26+'a';if(strcmp(s1,s2)==0)break;}if(i>=26)puts("NO");else puts("YES");}else{int sum1=0,sum2=0;for(int i=0;i<len;i++){sum1+=(s1[i]-'a');sum2+=(s2[i]-'a');}if(sum1%2==sum2%2)puts("YES");else puts("NO");}}return 0; }
轉載于:https://www.cnblogs.com/jie-dcai/p/4271194.html
總結
- 上一篇: LinearGradient线性渲染
- 下一篇: Ubuntu 14.04.1 配置 An