正文

孤独的骑士(ACM)2007-06-01 21:53:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/lingdlz/26327.html

分享到:

问题描述

任务很简单. 确定国际象棋棋盘上处于骑士攻击之下的格子个数. 棋盘上没有其它棋子. 骑士的走法: 横

(纵)向走两个格, 再纵(横)向走一个格(类似于中国象棋中的马).

输入

第一行为测试次数N, 1 ≤ N ≤ 100.
后面N行每行包含一个坐标表示骑士的位置.
字母表示横向位置, 数字表示纵向位置.

输出

输出N行. 每行一个整数, 表示骑士可攻击的格子个数.

输入样例


3
a1
d4
g6

输出样例


2
8
6

// 注意国际象棋的棋盘为 8*8 的矩阵

#include <stdio.h>
#include <stdlib.h>
int main(){
 int  k,n,i,x,y;
 int  b[] = {-2,-1,1,2,2,1,-1,-2};
 int  c[] = {1,2,2,1,-1,-2,-2,-1};
 char str[4];

 scanf("%d",&n);
 for(; n > 0; n--){
  scanf("%s",str);
  y = tolower(str[0]) - 'a';
  x = str[1] - '1';
  for(k = 0,i = 0; i < 8; i++){
   if(x+c[i]<0 || x+c[i]>7 || y+b[i]<0 || y+b[i]>7)
    continue;
   k++;
  }
  printf("%d\n",k);
 }
 return 0;
}

阅读(3054) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册