zoukankan      html  css  js  c++  java
  • HDU 1242

    题意:有一个人被困在监狱了,他的朋友想去救他,x代表守卫,a代表这个人,r代表他的朋友,#代表墙,问朋友找他最小的时间,移动一格时间+1,如果那地方是守卫,杀死守卫也需要+1时间;

    思路:和HDU 1240差不多,记忆最短路径。

    但这题有个坑点,就是他的朋友可能有多个,我读题的时候没看到... 直接超时4发

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<climits>
    using namespace std;
    const int qq=200+5,no=1e7;
    char map[qq][qq];
    int dis[qq][qq],n,m,minx;
    int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
    void dfs(int x,int y,int cnt)
    {
        if(x<0||y<0||x>=n||y>=m)    return;
        if(map[x][y]=='#')    return;
        if(cnt>=dis[x][y])    return;
        else    dis[x][y]=cnt;    
        if(cnt>=minx)    return;
        if(map[x][y]=='r')    if(cnt<minx)    minx=cnt;
        if(map[x][y]=='x')    ++cnt;
        for(int i=0;i<4;++i)
            dfs(x+dx[i],y+dy[i],cnt+1);
        return;
    }
    int main()
    {
        while(cin >> n >> m){
            int sx,sy;
            for(int j,i=0;i<n;++i)
                for(j=0;j<m;++j){
                    cin >> map[i][j];
                    if(map[i][j]=='a'){
                        sx=i;sy=j;
                    }
                    dis[i][j]=no;
                }
        minx=INT_MAX;
        dfs(sx,sy,0);
        if(minx!=INT_MAX)    cout << minx << endl;
        else    cout << "Poor ANGEL has to stay in the prison all his life."  << endl;
        }
    }

    %*c代表跳过这个变量;

  • 相关阅读:
    exceljs xlsx 前端生成excel 和解析excel (一)
    分片分N次请求记录,包含重试控制,前端拼接总数据数组后导出
    打包文件复制脚本
    复制到剪贴板
    去掉控制台consolelog
    axios 使用 v3
    并发 promiseAll from dalao
    axios 使用v2
    docker-compose安装sonarqube7.9
    centos7 部署minio
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5137840.html
Copyright © 2011-2022 走看看