您的位置:首页 > 其它

孤独的骑士 oj60

2017-07-26 18:09 232 查看


孤独的骑士

发布时间: 2017年5月25日 19:57   最后更新: 2017年5月26日 00:18   时间限制: 1000ms   内存限制: 128M

描述

任务很简单. 确定国际象棋棋盘上处于骑士攻击之下的格子个数. 棋盘上没有其它棋子. 骑士的走法: 横(纵)向走两个格, 再纵(横)向走一个格(类似于中国象棋中的马).

输入

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

输出

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

样例输入1 复制
3
a1
d4
g6


样例输出1
2
8
6


#include<iostream>
using namespace std;
int dir[8][2] = { { -2, 1 }, { -1, 2 }, { 1, 2 }, { 2, 1 },
{ 2, -1 }, { 1, -2 }, { -1, -2 }, { -2, -1 } };
int main()
{
int t;
cin >> t;
while (t--)
{
char str[2];
cin >> str;
int ans = 0,nX,nY;
nY=str[1]-'0';
switch (str[0])
{
case 'a':
nX = 1; break;
case 'b':
nX = 2; break;
case 'c':
nX = 3; break;
case 'd':
nX = 4; break;
case 'e':
nX = 5; break;
case 'f':
nX = 6; break;
case 'g':
nX = 7; break;
case 'h':
nX = 8; break;
}
int X, Y;
for (int i = 0; i < 8; i++)
{
X = nX + dir[i][1];
Y = nY + dir[i][0];
if (X >= 1 && X < 9 && Y >= 1 && Y < 9)
ans++;
}
cout << ans << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM