问题 3447 --象棋中的马(程序填空)

3447: 象棋中的马(程序填空)★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 135  解决: 88
[提交][状态][命题人:]

题目描述

今天Eddie新买了一副象棋

说起下象棋,Eddie爷爷在Eddie很小的时候就开始教他了

但今天Eddie有个新的想法,想在围棋棋盘上研究一下如何下象棋

这个想法真的很不错,也许可以去申请一项专利

我们知道围棋棋盘是19*19,如下图所示

我们都知道象棋中的“马”是按“日”字形走的,

举个例子,比如当前马(不妨称之为H)在上述棋盘中的位置为(10,10)

那么H下一步可以跳到如下位置中的其中一个

(12,11),  (12,9), (11,8), (9,8),(8,9),(8,11),(9,12),(11,12)

现规定象棋棋盘左上角坐标为(1,1),右上角坐标为(1,19),

左下角坐标为(19,1),右下角坐标为(19,19)

要确保H所走的下一步不能超出棋盘的边界。

#include<bits/stdc++.h>
using namespace std;
//下一步可能跳到的八个位置 
int deltax[8]={-1,1,-2,2,-2,2,-1,1};
int deltay[8]={____(1)___________};

int main(){
    int x,y,nx,ny;
    cin>>x>>y;
    for(int i=0;i<8;i++){
        nx=x+deltax[i];
        ny=y+deltay[i];
        //判断是否在有效范围内 
        if(_____(2)________)
		{
            cout<<nx<<" "<<ny<<endl;
        }
    }
    return 0;
} 


输入

两个整数,表示当前马所在的位置(x,y)

输出

当前马下一步可以跳到的位置,

每个位置一行,中间用空格隔开

如果有多个可跳的位置,

则按从上到下,从左到到右的顺序进行输出

样例输入
Copy
10 10
样例输出
Copy
9 8
11 8
8 9
12 9
8 11
12 11
9 12
11 12

提示

来源

[提交][状态]