CodeForces-748B
关键在于判断是否能够得到解决办法,我的思路就是用一个数组来记录每个小写字母对应的按键,如果它出现对应两个级以上不同的按键那么就说明不能得出解决办法,直接打印‘-1’.如果能够得出解决办法,就扫描一下数组统计需要交换的次数,再打印解决方案就OK
AC代码:
#include<cstdio>
#include<cstring>
const int maxn=1000+5;
char a[maxn],b[maxn];
int f[26];
char s[26];
struct node{
	int x,y;
};
int main(){
	while(scanf("%s%s",a,b)!=EOF){
		memset(f,0,sizeof(f));
		int n=strlen(a);
		int flag=1;
		for(int i=0;i<n;++i){
			if(f[a[i]-'a']==0) {
				s[a[i]-'a']=b[i];
				f[a[i]-'a']++;
			}
			else if(f[a[i]-'a']==1){
				if(s[a[i]-'a']!=b[i]) {
					flag=0;
					break;
				}
			}
			if(f[b[i]-'a']==0) {
				s[b[i]-'a']=a[i];
				f[b[i]-'a']++;
			}
			else if(f[b[i]-'a']==1){
				if(s[b[i]-'a']!=a[i]) {
					flag=0;
					break;
				}
			}
		}
		if(!flag) printf("-1\n");
		else {
			int k=0;
			node ans[26];
			int vis[26];
			memset(vis,0,sizeof(vis));
			for(int i=0;i<26;++i){
				if(vis[i]) continue;
				if(f[i]==1&&s[i]-'a'!=i) {
					ans[k].x=i;
					ans[k++].y=s[i]-'a';
					vis[i]=vis[s[i]-'a']=1;
				}
			}
			printf("%d\n",k);
			for(int i=0;i<k;++i) printf("%c %c\n",ans[i].x+'a',ans[i].y+'a');
		}
	}
	return 0;
}
如有不当之处欢迎指出!
CodeForces-748B的更多相关文章
- CodeForces - 748B Santa Claus and Keyboard Check
		题意:给定两个字符串a和b,问有多少种不同的字母组合对,使得将这些字母对替换字符串b后,可以变成字符串a.注意字母对彼此各不相同. 分析:vis[u]记录与u可形成关系的字母,若u与v不同,则形成字母 ... 
- python爬虫学习(5) —— 扒一下codeforces题面
		上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ... 
- 【Codeforces 738D】Sea Battle(贪心)
		http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ... 
- 【Codeforces 738C】Road to Cinema
		http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ... 
- 【Codeforces 738A】Interview with Oleg
		http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ... 
- CodeForces - 662A Gambling Nim
		http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ... 
- CodeForces - 274B Zero Tree
		http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ... 
- CodeForces - 261B Maxim and Restaurant
		http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ... 
- CodeForces - 696B Puzzles
		http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ... 
- CodeForces - 148D Bag of mice
		http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ... 
随机推荐
- 爬虫_vs_反爬虫
			爬虫中有哪些专业术语? 爬虫:自动获取网站数据的程序,关键是批量的获取 反爬虫:使用技术手段防止爬虫程序的方法 误伤:反爬虫技术将普通用户识别为爬虫,效果再好也不能用(禁止ip) 成本:反爬虫需要人力 ... 
- 前端开发人员需要了解的CSS原理
			转自http://web.jobbole.com/10011/ 一.浏览器的发展与CSS 网页浏览器主要通过HTTP协议连接网页服务器而取得网页,HTTP容许网页浏览器送交资料到网页服务器并且获取网页 ... 
- python初识-day2
			1.模块初识 python中的库包括标准库和第三方库,需要使用时可直接导入,导入格式为"import 库模块",例如: import sys #sys为python的标准库 pr ... 
- Servlet--ServletRequest接口,ServletResponse接口
			ServletRequest接口 定义 public interface ServletRequest 定义一个 Servlet 引擎产生的对象,通过这个对象, Servlet 可以获得客户端请求的数 ... 
- DNS入门
			引言 常见的计网协议通过IP地址来识别分布式应用的主机,然而IPV4(特别是IPV6)的地址太繁琐难以使用和记忆,因此提出了使用主机名称来识别,实质是:主机名称通过称为名称解析的过程转换为IP地址.其 ... 
- MySQL查看和修改表的存储引擎
			1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name where name='table_na ... 
- ie下常见的css兼容问题
			1.border-radius 边框圆角 IE8及以下浏览器不支持border-radius webkit引擎支持-webkit-borderradius 私有属性 mozilla Gecko引擎支持 ... 
- nodejs爬虫笔记(五)---利用nightmare模拟点击下一页
			目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ... 
- Nginx+Geoserver部署所遇问题总结
			文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 该问题的最终解决离不开公司大拿whs先生的指点,先表示感谢. ... 
- CSS继承、层叠和特殊性
			1.继承 (1)样式应用于某个特定的HTML标签元素,而且应用于其后代. (2)但某些标签不适用,如border: (3)例子:p{color:red;}设置了颜色 <p class=" ... 
