• light 1012 Guilty Prince


      题意:一共有 T 组测试数据,每组先给两个数,w,h,表示给一个 高h,宽w的矩阵,‘#’表示不能走,‘.’表示能走,‘@’表示起始点,问,从起始点出发能访问多少个点。

      简单的BFS题,以前做过一次。

    #include<stdio.h>
    #include<string.h>
    
    struct node{
        int x,y;
    };
    node q[450];
    int head,tail;
    int visit[25][25];
    int dx[]={1,0,-1,0};
    int dy[]={0,1,0,-1};
    int w,h;
    int sx,sy;
    int ans;
    int OK(int x,int y)
    {
        if(x>=1 && x<=h && y>=1 && y<=w && !visit[x][y])
            return 1;
        return 0;
    }
    void Deal()
    {
        head=tail=0;
    
        node t,t1;
        t.x=sx;t.y=sy;
        q[++tail]=t;
        visit[sx][sy]=1;
        ans=1;
    
        while(head<tail)
        {
            t=q[++head];
    
            for(int i=0;i<4;i++)
            {
                int xx=t.x+dx[i];
                int yy=t.y+dy[i];
                if(OK(xx,yy))
                {
                    ans++;
                    visit[xx][yy]=1;
                    t1.x=xx;t1.y=yy;
                    q[++tail]=t1;
                }
            }
        }
    }
    int main()
    {
        int T,cas=1;
        char ch[25];
        scanf("%d",&T);
        while(T--)
        {
            memset(visit,0,sizeof(visit));
            scanf("%d%d",&w,&h);
            for(int i=1;i<=h;i++)
            {
                scanf("%s",ch+1);
                for(int j=1;j<=w;j++)
                {
                    if(ch[j]=='#') visit[i][j]=1;
                    if(ch[j]=='@') sx=i,sy=j;
                }
            }
            Deal();
            printf("Case %d: %d
    ",cas++,ans);
        }
        return 0;
    }
  • 相关阅读:
    JS 位数不够自动左补0
    oracle 不同表空间的数据迁移
    Vue 学习
    c# 之Web.config
    c# 之泛型
    WritableWorkbook操作Excel
    MIME类型
    Excel 批量出来数据
    Excel的用到的常规的技巧
    得到Xml中 元素的值
  • 原文地址:https://www.cnblogs.com/yongren1zu/p/3295520.html
Copyright © 2020-2023  润新知