zoukankan      html  css  js  c++  java
  • Oh,mygoddess

    很早的时候就看了这一道题目 , 当时不会做 , 现在 边听歌边写无压力 ........

    题意 : 光辉骑士 一直都在 迷宫的右上角 , 第一行给你迷宫的规格 , 下面是迷宫 "O" 代表空地需要花一个单位时间跨越 , "#" 代表

    墙 ,需要三个单位的时间把墙破开 , 也就是 "O"为一个时间  "#"为4个时间 .

     下面附上代码 .

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<vector>
    #include<set>
    #include<stack>
    #include<string>
    #include<sstream>
    #include<map>
    #include<cctype>
    using namespace std;
    struct node
    {
        int x,y,step;
        friend bool operator <(node s1,node s2)
        {
            return s1.step>s2.step;
        }
    };
    char a[52][52];
    int n,m,tx,ty,b[4][2]={0,-1,0,1,-1,0,1,0},visited[52][52];
    priority_queue<node>Q;
    int BFS(int x,int y)
    {
        node q={x,y,0};
        Q.push(q);
        while(!Q.empty())
        {
            node e=Q.top();                         //  怎么会把 这里  忘了呢    ?
            Q.pop();
            for(int i=0;i<4;i++)
            {
                q.x=e.x+b[i][0],q.y=e.y+b[i][1];   //怎么 整天 都  弄错    ? 
                if(q.x>=0&&q.x<m&&q.y>=0&&q.y<n&&!visited[q.y][q.x])
                {
                    if(a[q.y][q.x]=='O')
                        q.step=e.step+1;
                    if(a[q.y][q.x]=='#')
                        q.step=e.step+4;
                    visited[q.y][q.x]=1;
                    Q.push(q);
                    if(q.x==tx&&q.y==ty)   //注意  安放的位置
                    {
                        return q.step;
                    }
                }
            }
        }
    }
    int main()
    {
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    scanf(" %c",&a[i][j]);
                }
            }
            scanf("%d%d",&ty,&tx);
            tx--;
            ty--;
            memset(visited,0,sizeof(visited));
            visited[0][0]=1;
            while(!Q.empty())   //  注意  清空
                Q.pop();
            int mark=BFS(0,0);
            printf("%d
    ",mark);
        }
    }

     

     

  • 相关阅读:
    show variables 详解
    用expect做自动应答脚本
    percona-toolkit工具检查MySQL复制一致性及修复
    Discuz论坛架构改造
    注解处理器
    ora-12514 tns 监听程序当前无法识别连接描述符中请求的服务
    内嵌Tomcat和SpringMVC的简单整合测试
    @Import导入ImportSelector实现类demo
    Mybatis-Spring项目编写测试类
    @Configuration注解作用和在Spring中的处理
  • 原文地址:https://www.cnblogs.com/A-FM/p/5352391.html
Copyright © 2011-2022 走看看