龙空技术网

洛谷刷题C++语言 | P1443 马的遍历

热爱编程的通信人 117

前言:

现时兄弟们对“python中int405”大约比较关心,朋友们都想要了解一些“python中int405”的相关知识。那么小编在网络上汇集了一些对于“python中int405””的相关资讯,希望我们能喜欢,姐妹们一起来学习一下吧!

学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。

附上汇总贴:洛谷刷题C++语言 | 汇总_热爱编程的通信人的博客-CSDN博客

【题目描述】

有一个 n×m 的棋盘,在某个点 (x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

【输入】

输入只有一行四个整数,分别为 n,m,x,y。

【输出】

一个 n×m 的矩阵,代表马到达某个点最少要走几步(不能到达则输出 −1)。

【输入样例】

3 3 1 1

【输出样例】

0    3    2    3    -1   1    2    1    4    

【代码详解】

#include <bits/stdc++.h>using namespace std;int n, m, x, y, a[405][405];struct node {    int x, y;};int main(){    cin >> n >> m >> x >> y;    int dx[8]={-1,-2,-2,-1,1,2,2,1}, dy[8]={-2,-1,1,2,2,1,-1,-2};    memset(a, -1, sizeof(a));    queue<node> q;    node tp = {x, y};    a[x][y]=0;    q.push(tp);    while (!q.empty()) {        tp = q.front();        q.pop();        for (int i=0; i<8; i++) {            int xx = tp.x+dx[i], yy = tp.y+dy[i];            if (xx<1 || xx>n || yy<1 || yy>m || a[xx][yy]!=-1) continue;            a[xx][yy] = a[tp.x][tp.y]+1;            node t = {xx,yy};            q.push(t);        }    }    for (int i=1; i<=n; i++) {        for (int j=1; j<=m; j++) {            cout << a[i][j] << "    ";        }        cout << endl;    }    return 0;}

【运行结果】

3 3 1 10    3    23    -1    12    1    4

标签: #python中int405