zoukankan      html  css  js  c++  java
  • HDU

    wa了一遍,炸了两遍

    (1)迷宫题中的模拟题。只需要简单代码就可以ac。如果程序有问题,最后就会卡死,出现runtime error。

    (2)边界问题一定要小心,数组是从0开始的,就要考虑r--会不会小于0,导致访问Vis[r][c]下标越界。正常情况下,越界很有可能是下标为负数引起的,此类问题要当心。

    (3)map不要随便用,正常开二维数组vis就可以了。

    (4)这种四个方向的,很多操作都重复了,要适当简化代码

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define maxn 100
    #define rep(i,a,b) for(int i=(a);i<(b);i++)
    #define ll long long
    char s[maxn][maxn];
    int vis[maxn][maxn];
    
    int main()
    {
        int n,m,k;
        while(~scanf("%d%d",&n,&m))
        {
            rep(i,0,maxn){
                rep(j,0,maxn)
                    vis[i][j]=0;
            }
            if(n==0&&m==0)
                break;
            scanf("%d",&k);
            rep(i,0,n)
                scanf("%s",s[i]);
    
            int r=0;
            int c=k-1;
            vis[r][c]=1;
    
            int ans=0;
            int cnt=0;
    
            int f=1;
    
            while(r>=0&&r<n&&c>=0&&c<m)//起点也可能在迷宫外,必须加上条件
            {
                int pre=vis[r][c];
                ans=vis[r][c];
                if(s[r][c]=='S')
                    r++;
                else if(s[r][c]=='N')
                    r--;
                else if(s[r][c]=='W')
                    c--;
                else if(s[r][c]=='E')
                    c++;
    
                if(r<0||r>=n||c<0||c>=m)//r,c可能小于0,必须加上
                    break;
                if(vis[r][c])
                {
                    f=-1;
                    ans=pre-vis[r][c]+1;
                    cnt=vis[r][c]-1;
                    break;
                }
                vis[r][c]=pre+1;
            }
    
            if(f==1)
            {
                printf("%d step(s) to exit
    ",ans);
            }
            else if(f==-1)
            {
                printf("%d step(s) before a loop of %d step(s)
    ",cnt,ans);
            }
        }
        return 0;
    }
  • 相关阅读:
    乐观锁配置
    @NotBlank注解地正确使用
    Navicat Premium 12.1手动激活
    nacos将服务注册到命名空间
    springcloud中微服务远程调用
    常用的运算符的操作
    时间复杂度和空间复杂度
    前后端分离跨域问题cors
    数据库迁移on_delete 以及NodeNotFoundError问题解决
    python去重后保证顺序不变
  • 原文地址:https://www.cnblogs.com/pipitongkw1/p/10714603.html
Copyright © 2011-2022 走看看