zoukankan      html  css  js  c++  java
  • 两次DFS,POJ(1481)

    题目链接:http://poj.org/problem?id=1481

     两次DFS,这里的思路是,没找到*,就说明,有一个骰子,因此,每搜索到一个*,深搜4个方向,并且变为'.',要是搜到'X',就是骰子的点数++,而且将他的四周的'X'变为'.'

    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<cstdio>
    #include<cmath>
    #include<string>
    
    using namespace std;
    
    char a[50+5][50+5];
    int count;
    
    int i_cmp(void const *x,void const *y)
    {
        return *(int*)x-*(int*)y;
    }
    
    void DFS_X(int x,int y)
    {
        if(a[x][y]!='X')
            return ;
        else
            a[x][y]='.';
        DFS_X(x-1,y);    ///题目要求只需要考虑上下左右四个方向即可,而不是八个方向
        DFS_X(x,y-1);
        DFS_X(x,y+1);
        DFS_X(x+1,y);
    }
    
    void DFS(int x,int y)
    {
        if(a[x][y]=='.')
            return ;
        if(a[x][y]=='X')
        {
            DFS_X(x,y);
            count++;
        }
        a[x][y]='.';
        DFS(x-1,y);
        DFS(x,y-1);
        DFS(x,y+1);
        DFS(x+1,y);
    }
    
    int main()
    {
        int w,h,num=1,ct,dote[100];
        while(scanf("%d%d",&w,&h)!=EOF)
        {
            if(w==0&&h==0) break;
            memset(a,'.',sizeof(a));
            for(int i=1; i<=h; i++)
            {
                getchar();
                for(int j=1; j<=w; j++)
                    scanf("%c",&a[i][j]);
            }
            ct=0;
            for(int i=1; i<=h; i++)
                for(int j=1; j<=w; j++)
                    if(a[i][j]=='*')
                    {
                        count=0;
                        DFS(i,j);
                        dote[ct++]=count;
                    }
            printf("Throw %d
    ",num++);
            qsort(dote,ct,sizeof(dote[0]),i_cmp);
            for(int i=0; i<ct; i++)
            {
                if(i)
                    printf(" ");
                printf("%d",dote[i]);
            }
            printf("
    
    ");
        }
        return 0;
    }
  • 相关阅读:
    vue实现短信验证码登录
    使用vue3.0和element实现后台管理模板
    vue导出excel数据表格功能
    Vue2.0-token权限处理
    vue2.0实现购物车功能
    Vue图片懒加载之lazyload插件使用
    H5 canvas 绘图
    前端常见跨域请求 方法
    Html5 @media + css3 媒体查询
    Java面试之RabbitMQ
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5513344.html
Copyright © 2011-2022 走看看