로곡 P1443말의 순코드 해제

12874 단어 문제 코드
이전의 2분 문제는 모두 일단락되었다.지금 검색을 보면 말의 범람은 매우 전형적인 bfs인데, 여기는 대기열로 하는 것이 비교적 편리하다
#include 
#include 
#include 
#include 
#define MAXN 405
using namespace std;
typedef struct coordinate{
    int x, y;
}coor;
coor horse;
queue <coor> q;
int chest[MAXN][MAXN];
int n, m;
int walk[8][2] = {{2, 1}, {1, 2}, {-1, 2}, {-2, 1}, {-2, -1}, {-1, -2}, {1, -2}, {2, -1}};

void print()
{
    for(int i = 1; i <= n; i ++)
    {
        for(int j = 1; j <= m; j ++)
        {
            printf("%-5d", chest[i][j]);
        }
        printf("
"
); } } int main() { scanf("%d%d%d%d", &n, &m, &horse.x, &horse.y); memset(chest, -1, sizeof(chest)); q.push(horse); chest[horse.x][horse.y] = 0; while(!q.empty()) { int temx, temy; coor first = q.front(); coor tem; q.pop(); for(int i = 0; i < 8; i ++) { temx = first.x + walk[i][0]; temy = first.y + walk[i][1]; if(temx < 1 || temy < 1 || temx > n || temy > m || chest[temx][temy] != -1) continue; chest[temx][temy] = chest[first.x][first.y] + 1; tem.x = temx; tem.y = temy; q.push(tem); } } print(); return 0; }

좋은 웹페이지 즐겨찾기