HDU 4357
2024-10-01 11:00:39
这道题写起来没难度,但这种题确实很难,这种字符串的题难在证明。以后也要注意。
奇偶性不同的字符串肯定不能转换,因为每一次交换都是字符串的和增加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;
}
最新文章
- awk中的system和getline的用法
- 【转】ArrayList循环遍历并删除元素的常见陷阱
- 如何在word中的第3+n页处插入页面并重新从1开始
- QT实现贪吃蛇
- Webpack+React配合开发
- js学习笔记一-语法结构
- oracle的基本信息查询
- ERP系统开发平台 (C#语言,支持多数据库)
- 【结构型】Decorate模式
- git的sshkey生成步骤
- Win7环境 搭建IIS环境。发布asp.net MVC项目到IIS(第二期)
- LeetCode第十五题-找出数组中三数和为0的答案
- JavaScript获取及判断文件类型
- Android测试(一)——Apk文件结构以及Android组件介绍
- MHA 实现VIP切换用到脚本
- 详细解读Android中的搜索框(一)—— 简单小例子
- VS2013 UML 如何复制文件
- Git 无法拉取,Unlink of file &#39;.git/objects/pack/pack-***.pack&#39; failed. Should I try again? (y/n)
- End of Life check fails with NullPointerException
- iOS 内存管理(转载)