您的位置:首页 > 其它

HDU 4357 String change

2016-04-23 09:14 183 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: