B 跳马 (100分)
无论在中国象棋还是国际象棋中“马”都是走“日”字的。比如我们把国际象棋的棋盘的左上角的坐标设为(0,0),它右边格子的坐标为(0,1),下边的格子坐标为(1,0),右下格子的坐标为(1,1),其它点的坐标以此类推。如果马现在位于(4,4)上,那么它一步能走到的格子的坐标分别为(3,2)、(2,3)、(2,5)、(3,6)、(5,6)、(6,5)、(6,3)、(5,2),现在我们把这八种走法分别标记为1、2、3、4、5、6、7、8,也就是说当输入为1是,代表马向左上偏下的点走,输入为2时代表马向左上偏上的点走,其它依次类推。现请你写一段程序,记录马在棋盘上行走的路线。
输入格式:
先是8行,每行为长度为8的字符串,代表棋盘上每个格里的字符(只包含大写字母)。 第9行是2个整数,代表马的初始位置。 第10行是一个字符串(长度大于0小于30),代表马每一步如何走。测试数据保证合法,且保证不存在走到棋盘以外的情况。
输出格式:
只有一行,依次为马行走路线上的格子里的字符(包括马的初始位置)。
输入样例:
在这里给出一组输入。例如:
HIJKLMNO
PQERSTUV
WDXYLZAB
CDEFGHLI
LJKLMNOP
QRRSTUVO
WXYZOQWE
RTYUIOWP
0 0
555671113
输出样例:
在这里给出相应的输出。例如:
HELLOWORLD
#include <stdio.h>
int main() {
char a[10][10];
for (int i = 0; i <8 ; i++) {
scanf("%s",a[i]);
}
int m,n;
scanf("%d%d",&m,&n);
char j[50];
scanf("%s",j);
int i=0;
int c;
printf("%c",a[m][n]);
while (j[i]!='\0'){
c=j[i]-'0';
if (c==1){
m=m-1;
n=n-2;
}
if (c==2){
m=m-2;
n=n-1;
}
if (c==3){
m=m-2;
n=n+1;
}
if (c==4){
m=m-1;
n=n+2;
}
if (c==5){
m=m+1;
n=n+2;
}
if (c==6){
m=m+2;
n=n+1;
}
if (c==7){
m=m+2;
n=n-1;
}
if (c==8){
m=m+1;
n=n-2;
}
printf("%c",a[m][n]);
i++;
}
return 0;
}