http://acm.hdu.edu.cn/showproblem.php?pid=4357
题意:
给定a串b串,问能否把a变成b串
方法:任选a的2个字母,ascil+=1 然后交换位置,可以操作任意多次。
3个及3个以上一定可以T^T
2个就暴力判一下
像这种只要最后结果不求过程的题目,往往都是有规律可循的
#include <iostream>
#include <cstdio>
#include <string>
#include <cmath>
#include <cstring>
using namespace std;
char a[100];
char b[100];
int check(){
int cnt = 30;
while(cnt--){
if(a[0]==b[0] && a[1] == b[1]) return 1;
a[0] = (a[0]-'a'+1)%26 + 'a';
a[1] = (a[1]-'a'+1)%26 + 'a';
char c = a[0];
a[0] = a[1];
a[1] = c;
}
return 0;
}
int main()
{
int i,j,k,t,m,n;
cin>>t;
int cnt = 1;
while(t--){
cin>>a;
cin>>b;
printf("Case #%d: ",cnt++);
int len = strlen(a);
if(len==2){
if( check()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
else{
int sum = 0;
for(i=0;i<len;i++){
sum+=(a[i]-'a');
}
for(i=0;i<len;i++){
sum+=(b[i]-'a');
}
if( sum % 2 ==0 ){
cout<<"YES"<<endl;
}
else
cout<<"NO"<<endl;
}
// cout<<endl;
}
return 0;
}