• Uva657


    原题链接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=598

    这题就是在一堆*里找X,相邻的X算一个,所以我们可以两次dfs搜索,dfs2搜*有多少堆,dfs2搜一堆*里面有多少个不同的X,然后在按升序把每个堆里面的不同X输出来= =

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    char ma[100][100];
    int n,m;
    int t;
    int dis[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
    int num[100];
    void dfs1(int x,int y)
    {
        int xx,yy;
        ma[x][y]='*';
        for(int i=0;i<4;i++)
        {
            xx=x+dis[i][0];
            yy=y+dis[i][1];
            if(xx<0||xx>=n||yy<0||yy>=m||ma[xx][yy]=='*')
            continue;
            if(ma[xx][yy]=='X')
                dfs1(xx,yy);
        }
    }
    void dfs2(int x,int y)
    {
        int xx,yy; 
        ma[x][y]='.';
        for(int i=0;i<4;i++)
        { 
           xx=x+dis[i][0];
           yy=y+dis[i][1];
           if(xx<0||xx>=n||yy<0||yy>=m||ma[xx][yy]=='.')
            continue;
            if(ma[xx][yy]=='X')
            {
            dfs1(xx,yy);
            num[t]++;
            }    
              if(ma[xx][yy]=='*')
            dfs2(xx,yy);
        }
    }
    int main()
    {
        int cnt=0;
        while(scanf("%d %d",&m,&n)!=EOF&&m&&n)
        {
            t=0;
            memset(num,0,sizeof(num));
            memset(ma,'.',sizeof(ma));
            for(int i=0;i<n;i++)
             scanf("%s",ma[i]); 
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(ma[i][j]=='*')
                    {
                        dfs2(i,j);
                        t++;
                    }
                }
            }
            sort(num,num+t);
            printf("Throw %d
    ",++cnt);
            for(int i=0;i<t-1;i++)
            printf("%d ",num[i]);
            printf("%d
    ",num[t-1]);
            printf("
    "); 
        }
        return 0;
    }
  • 相关阅读:
    JavaScript常用正則表達式
    详尽解析window.event对象
    DWR的类却无法在js里用
    javascript控制小数点精度
    49. Group Anagrams
    48. Rotate Image
    64. Minimum Path Sum
    63. Unique Paths II
    62. Unique Paths
    53. Maximum Subarray
  • 原文地址:https://www.cnblogs.com/NaCl/p/4782520.html
Copyright © 2020-2023  润新知