跳马问题

来源:互联网 发布:华为麦芒4 4g网络设置 编辑:程序博客网 时间:2024/05/17 21:42


 

#include <iostream>#include <queue>using namespace std;typedef struct{    int row;    int col;}Node;int n;int sx,sy;//start nodeint ex,ey;//end nodeint map[200][200];//mark arrayint a[8][2] = {{1,2},{2,1},{1,-2},{2,-1},{-1,-2},{-2,-1},{-1,2},{-2,1}};//transfer arrayint result[10000];int bfs(){    for(int i = 0;i < 200; i++)            for(int j = 0;j < 200; j++)                map[i][j] = -1;    Node node;    node.row = sx - 1;    node.col = sy - 1;    queue<Node> q;    q.push(node);    map[node.row][node.col] = 0;    while(!q.empty()){        Node nowNode = q.front();        q.pop();        int row = nowNode.row;        int col = nowNode.col;        if(row == ex - 1 && col == ey - 1){            return map[row][col];        }else{            Node nextNode;            for(int i = 0;i < 8;i++){                nextNode.row = row + a[i][0];                nextNode.col = col + a[i][1];                if(nextNode.row >= 0 && nextNode.row < 200 && nextNode.col >= 0                   && nextNode.col < 200 && map[nextNode.row][nextNode.col] == -1){                        map[nextNode.row][nextNode.col] = map[row][col] + 1;                        q.push(nextNode);                   }            }        }    }    return -1;}int main(){    cin >> n;    for(int i = 0;i < n;i++){        cin >> sx >> sy >> ex >> ey;        result[i] = bfs();    }    for(int j = 0;j < n;j++){        cout << result[j] << endl;    }    return 0;}

0 0
原创粉丝点击