POJ 2243 广搜

来源:互联网 发布:c语言关机恶搞程序 编辑:程序博客网 时间:2024/04/30 18:53

经典跳马问题。

题意:有一只国际象棋的马, 给出马的起点终点坐标,求出马需要移动的最小次数。

 

广搜吧,没什么好说的。

 

#include <iostream>#include <cmath>#include <algorithm>#include <cstdio>#include <vector>#include <stack>#include <queue>#include <cstring>#include <ctype.h>#define MAXN 200using namespace std;#define INF 2100000000int n, m;int map[MAXN][MAXN];int cnt[MAXN];int path[8][2] = {{-2, -1}, {-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}, {1, -2}, {-1, -2}};bool vis[MAXN*MAXN];bool islegal(int row, int col){    if(row < 0 || row >= 8 || col < 0 || col >= 8 || vis[row*8+col]) return 0;    return 1;}void bfs(int sta, int end){    queue<int> q;    q.push(sta);    vis[sta] = 1;    while(!q.empty())    {        int fr = q.front();        q.pop();        if(fr == end) return;        for(int i = 0; i < 8; i++)        {            int row = fr/8 + path[i][1];            int col = fr%8 + path[i][0];            if(islegal(row, col))            {                int tt = row*8+col;                vis[tt] = 1;                q.push(tt);                cnt[tt] = cnt[fr] + 1;            }        }    }}int main(){    //freopen("C:/Users/zts/Desktop/in.txt", "r", stdin);    string a, b;    while(cin >> a >> b)    {        memset(vis, 0, sizeof(vis));        memset(cnt, 0, sizeof(cnt));        int s = (a[0]-'a')+(a[1]-'0'-1)*8;        int e = (b[0]-'a')+(b[1]-'0'-1)*8;        bfs(s, e);        //printf("To get from e2 to e4 takes 2 knight moves.")        cout << "To get from " << a << " to " << b << " takes " << cnt[e] << " knight moves." << endl;        //cout << cnt[e] << endl;    }    return 0;}


 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子上网成瘾不听父母话怎么办 10岁数学不开窍怎么办 孩子五年级数学不好怎么办 一岁宝宝难断奶怎么办 2岁宝宝断不了奶怎么办 快2岁宝宝不听话怎么办 2岁半的宝宝不听话怎么办 3岁宝宝哭闹不止怎么办 2岁宝宝爱打人怎么办 两周岁宝宝吃东西就吐怎么办 两周岁宝宝不爱吃饭怎么办 两周岁宝宝反复发烧怎么办 两周岁宝宝咳嗽厉害怎么办 2岁宝宝体内有火怎么办 4岁宝宝数都不会怎么办 两岁宝宝太撅怎么办 儿童晚上发烧白天不发烧怎么办 宝宝晚上睡觉认人怎么办 两岁宝宝尿裤子怎么办 分手了想和好怎么办说 2岁半宝宝胆小怎么办 1岁半宝宝胆小怎么办 分手了还是想他怎么办 两岁宝宝夜惊怎么办 孩子误吃了牙膏怎么办 孩子跳舞脸上的妆卸不掉怎么办 4周岁还不会说话怎么办 宝贝2岁多还不会说话怎么办 孩子20个月离婚怎么办 两个月宝宝闹夜怎么办 两个月宝宝闹瞌睡怎么办 2岁宝宝话特别多怎么办 宝宝3岁还不会说话怎么办 小儿3岁说话晚怎么办 1岁半了不会说话怎么办 宝宝2岁还说话晚怎么办 一岁宝宝不愿意学说话怎么办 2周岁宝宝不愿意学说话怎么办 三岁宝宝不爱说话应该怎么办 三岁宝宝不理人怎么办 两岁半宝宝不说话不连贯怎么办