记录编号 233822 评测结果 AAAAAAAAAA
题目名称 [POJ1657] 棋盘上的距离 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2016-03-06 06:11:56 内存使用 0.29 MiB
显示代码纯文本
#include<cstdio>
//#define abs(a) a>0?a:-a
int abs(int x){
	return x>0?x:-x;
}
int min(int a,int b){
	return a>b?b:a;
}
int main(){
	freopen("poj_1657.in","r",stdin);
	freopen("poj_1657.out","w",stdout);
	int t;scanf("%d",&t);
	char sa[4],sb[4];
	int s1[4],s2[4];
	while(t--){
		scanf("%s %s",sa,sb);
		s1[0]=sa[0]-'a';s2[0]=sb[0]-'a';
		s1[1]=sa[1]-'0';s2[1]=sb[1]-'0';
		if(s1[0]==s2[0]){
			if(s1[1]==s2[1])printf("0 0 0 0\n");
			else{
				if((s1[1]-s2[1])%2==0)printf("%d 1 1 2\n",abs(s1[1]-s2[1]));
				else printf("%d 1 1 Inf\n",abs(s1[1]-s2[1]));
			}
		}else if(s1[1]==s2[1]){
			if((s1[0]-s2[0])%2==0)printf("%d 1 1 2\n",abs(s1[0]-s2[0]));
			else printf("%d 1 1 Inf\n",abs(s1[0]-s2[0]));
		}else{
			int a=abs(s1[0]-s2[0]);
			int b=abs(s1[1]-s2[1]);
			if(a==b)printf("%d 1 2 1\n",a,a);
			else{
				if(abs(a+b)%2==0)printf("%d 2 2 2\n",min(a+abs(a-b),b+abs(a-b)));
				else printf("%d 2 2 Inf\n",min(a+abs(a-b),b+abs(a-b)));
			}
		}
		
	}
	fclose(stdin);fclose(stdout);
	return 0;
}