【codeforces #3】A——BFS+貪心

來源:互聯網
上載者:User

BFS不解釋

#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define PI acos(-1.0)#define FRE freopen("input.txt","r",stdin)#define FF freopen("output.txt","w",stdout)#define N 100005char s[3];char t[3];struct node{    int x,y;};int d[8][2] = {-1,-1, -1,0, -1,1, 0,1, 1,1, 1,0, 1,-1, 0,-1};char dd[8][3] = {"LD", "L\0", "LU", "U\0", "RU", "R\0", "RD", "D\0"};queue<node> qq;vector<string> v;int dis(node a,node b){    return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);}void gao() {    int i,j;    while (!qq.empty()) {        qq.pop();    }    node tmp;    tmp.x = s[0] - 'a' + 1;    tmp.y = s[1] - '0';    qq.push(tmp);    node end;    end.x = t[0] - 'a' + 1;    end.y = t[1] - '0';    if(tmp.x == end.x && tmp.y == end.y){        puts("0");        return ;    }    while ( !qq.empty() ) {        tmp = qq.front();        qq.pop();//        int id;        int minm = MAX;        node tt;        for (i = 0; i < 8; i++) {            tt.x = tmp.x + d[i][0];            tt.y = tmp.y + d[i][1];            if (tt.x >= 1 && tt.x <= 8 && tt.y >= 1 && tt.y <= 8) {                if (dis(end, tt) < minm) {                    minm = dis(end, tt);                    id = i;                }            }        }        tt.x = tmp.x + d[id][0];        tt.y = tmp.y + d[id][1];        v.push_back(dd[id]);        qq.push(tt);        if(tt.x == end.x && tt.y == end.y){break;}/*        if(cnt==7){            cout<<tt.x<<" "<<tt.y<<endl;            break;        }*/    }    cout<<v.size()<<endl;    for (i = 0; i < v.size(); i++) {        cout<<v[i]<<endl;    }}int main(){    scanf("%s%s",s,t);    gao();    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.