zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    php算法之选择排序
    php算法之插入排序
    五分钟读懂UML类图
    ZC_知识点
    JNI_C#
    JNI_Z
    20160419__第1课_第6课
    Hibernate异常_01
    ZC_注意点
    ZC_知识点
  • 原文地址:https://www.cnblogs.com/yongren1zu/p/3295520.html
Copyright © 2011-2022 走看看