zoukankan      html  css  js  c++  java
  • 广搜

    #include <iostream>
    #include<queue>
    #include<cstring>
    using namespace std;
    struct node{
    int x,y;
    node(int x = 0,int y = 0){
        this -> x = x;
        this -> y = y;
        }
    };
    queue<node> A;
    int n,m,t;
    int xx,yy;
    char a[8][8];
    int d[8][8];
    void input(){
      for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
           {
               cin >> a[i][j];
               if(a[i][j]=='S') {
                xx = i;
                yy = j;
               }
           }
    }
    int main()
    {
        while(cin >> n >> m >> t && (n||m||t)){
        input();
        memset(d,-1,sizeof(d));
        int    flag = 0;
        int  firstnum=0,lastnum=0;
        node s(xx,yy);
        A.push(s);
        firstnum++;
        for(int i = 0; i <= t;i++){
        while(firstnum){
               node noden(A.front().x,A.front().y);
               if(i==t){
                if(a[noden.x][noden.y]=='D') {
                    flag = 1;
                    break;
                }
            }
                A.pop();
                firstnum--;
                if(noden.x-1>0&&a[noden.x-1][noden.y]=='.'&&d[noden.x-1][noden.y] < i) {
                      d[noden.x-1][noden.y] = i;
                    node sn(noden.x-1,noden.y);
                      cout << noden.x-1 << noden.y <<" ";
                        A.push(sn);
                        lastnum++;
                    }
                if(noden.x+1<=n&&a[noden.x+1][noden.y]=='.'&&d[noden.x+1][noden.y] <i) {
                      d[noden.x+1][noden.y] = i;
                    node sn(noden.x+1,noden.y);
                      cout << noden.x+1 << noden.y<<" ";
                        A.push(sn);
                        lastnum++;
               }
                if(noden.y-1>0&&a[noden.x][noden.y-1]=='.'&&d[noden.x][noden.y-1] < i) {
                    d[noden.x][noden.y-1] = i;
                    node sn(noden.x,noden.y-1);
                     cout << noden.x << noden.y-1 <<" ";
                        A.push(sn);
                        lastnum++;
               }
                if(noden.y+1<=m&&a[noden.x][noden.y+1]=='.'&&d[noden.x][noden.y+1] < i) {
                     d[noden.x][noden.y+1] = i;
                    node sn(noden.x,noden.y+1);
                    cout << noden.x << noden.y+1 <<" ";
                        A.push(sn);
                        lastnum++;
                }
            }
           cout << endl;
           firstnum = lastnum;
           lastnum = 0;
        }
        if(flag) cout <<"YES"<<endl;
        else cout << "NO" << endl;
        }
        return 0;
    }

  • 相关阅读:
    分别给Python类和实例增加属性和方法
    什么是tcp, udp 以及它们的区别
    输入www.baidu.com后的过程详解
    tcp 三次握手,四次挥手
    python sort 排序的使用
    mysql数据脏读、幻读、不可重复读
    python 之集合的删除
    CompletableFuture保证线程同步
    多线程动态传参问题
    git冲突的解决与版本回退遇到的问题
  • 原文地址:https://www.cnblogs.com/ACWQYYY/p/4636148.html
Copyright © 2011-2022 走看看