<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題目鏈接:https://www.luogu.org/problem/P1443

      題目描述

      有一個n*m的棋盤(1<n,m<=400),在某個點上有一個馬,要求你計算出馬到達棋盤上任意一個點最少要走幾步

      輸入格式

      一行四個數據,棋盤的大小和馬的坐標

      輸出格式

      一個n*m的矩陣,代表馬到達某個點最少要走幾步(左對齊,寬5格,不能到達則輸出-1)

      輸入輸出樣例

      輸入 #1
      3 3 1 1
      
      輸出 #1
      0    3    2    
      3    -1   1    
      2    1    4    

      題解

      此題是典型的BFS問題。不過和01迷宮問題有兩點不同:一是馬的走法不是上下左右,所以pos數組需要修改,二是走的步數需要從隊列中元素的步數加1。還有一個小問題就是要控制cout的輸出格式,剛開始沒有注意,10個全WA了。

       1 #include <iostream>
       2 #include <stdio.h>
       3 #include <math.h>
       4 #include <algorithm>
       5 #include <string.h>
       6 
       7 using namespace std;
       8 
       9 struct Node
      10 {
      11     int x, y;
      12     int step;
      13 };
      14 Node q[100005];
      15 
      16 const int MAXN = 1005;
      17 int n, m, a, b, c, d, step, front, rear, ans[MAXN][MAXN]; 
      18 int pos[8][2] = {2, 1, 2, -1, 1, 2, 1, -2, -1, 2, -1, -2, -2, 1, -2, -1};
      19 bool vis[MAXN][MAXN];
      20 
      21 void bfs()
      22 {
      23     Node now, next;
      24     now.x = a;
      25     now.y = b;
      26     vis[a][b] = 1; 
      27     now.step = 0;
      28     front = rear = 0;
      29     q[rear] = now;
      30     rear++;
      31     while(front < rear)
      32     {
      33         now = q[front++];
      34         for(int i = 0; i < 8; i++)
      35         {
      36             int nx = now.x + pos[i][0]; 
      37             int ny = now.y + pos[i][1]; 
      38             if(nx <= n && nx > 0 && ny <= m && ny > 0 
      39                 && vis[nx][ny] == false) 
      40             {
      41                 vis[nx][ny] = true;
      42                 q[rear].x = nx;
      43                 q[rear].y = ny;
      44                 q[rear].step = now.step + 1;
      45                 ans[nx][ny] = q[rear].step;
      46                 rear++;
      47             }
      48         } 
      49     }
      50 }
      51 
      52 int main()
      53 {
      54     cin >> n >> m >> a >> b;
      55     for(int i = 1; i <= n; i++)
      56     {
      57         for(int j = 1; j <= m; j++)
      58         {
      59             ans[i][j] = -1;
      60         }
      61     }
      62     ans[a][b] = 0;
      63     step = 1;
      64     bfs();
      65     for(int i = 1; i <= n; i++)
      66     {
      67         for(int j = 1; j <= m; j++)
      68         {
      69             cout.width(5);
      70             cout.setf(ios::left);
      71             cout << ans[i][j];
      72         }
      73         cout << endl;
      74     }
      75     return 0;
      76 }

       

      posted on 2019-08-10 10:54  zealsoft  閱讀(1246)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲欧美综合在线天堂| 天天躁日日躁狠狠躁一区| 国产精品福利片在线观看| 九九九国产| 国产成人a在线观看视频免费| 激情内射亚洲一区二区三区 | 精品人妻一区二区三区蜜臀| 无码AV无码免费一区二区| 亚洲欧洲∨国产一区二区三区| 国产精品一区中文字幕| 亚洲人成网站999久久久综合| 美女胸18下看禁止免费视频| 亚洲老熟女乱女一区二区| 边摸边吃奶边做爽动态| 涟源市| 尤物国产精品福利在线网| 99国产精品一区二区蜜臀| 亚洲国产成人av在线观看| 怡红院一区二区三区在线| 中文国产不卡一区二区| 狠狠噜天天噜日日噜| 尤溪县| 黄色免费在线网址| 蜜臀久久精品亚洲一区| 天堂中文在线资源| 国产精品粉嫩嫩在线观看| 国产高清在线男人的天堂| 国产黄大片在线观看画质优化| 思思99热精品在线| 成人精品日韩专区在线观看| 日韩中文字幕高清有码| 亚洲欧美另类久久久精品播放的| 亚洲天堂男人天堂女人天堂| 99中文字幕精品国产| 国产SM重味一区二区三区| 国产无遮挡性视频免费看| 亚洲成人www| 高清破外女出血AV毛片| 国产91色综合久久免费| 国产香蕉九九久久精品免费| 国产成人亚洲无码淙合青草|