uva 657 The die is cast

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

题意是给你一张上面画有骰子的图片,然你搜索出每个骰子上面的点数。

DFS题,实际上是两部分的DFS,先DFS骰子,然后在其中DFS到点数,把搜索过的点数标记为普通骰子,把搜索过的骰子标记成为背景。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<stack>
#include<vector>
#include<ctype.h>
#include<algorithm>
#include<string>
#define PI acos(-1.0)
#define maxn 55
#define INF 1<<25
#define MAX 0x7fffffff
typedef long long ll;
using namespace std;
int dir[4][2]= {{1,0},{-1,0},{0,1},{0,-1}};
char ss[maxn][maxn];
int cc[maxn*maxn];
int top,ans;
int xx,yy;
int init()
{
    memset(cc,0,sizeof(cc));
    top=0;
    ans=0;
}
int cango(int x,int y)
{
    if(x>=0&&x<xx&&y>=0&&y<yy)
        return 1;
    return 0;
}
int Cdfs(int x,int y)
{
    ss[x][y]=‘*‘;
    for(int i=0; i<4; i++)
    {
        int lx=x+dir[i][0];
        int ly=y+dir[i][1];
        if(cango(lx,ly))
        {
            if(ss[lx][ly]==‘X‘)
            {
                Cdfs(lx,ly);
            }
        }
    }
}
int Bdfs(int x,int y)
{
    ss[x][y]=‘.‘;
    for(int i=0; i<4; i++)
    {
        int lx=x+dir[i][0];
        int ly=y+dir[i][1];
        if(cango(lx,ly))
        {
            if(ss[lx][ly]==‘X‘)
            {
                cc[top]++;
                Cdfs(lx,ly);
            }
            if(ss[lx][ly]==‘*‘)
                Bdfs(lx,ly);
        }
    }

}
int main()
{
    int ii=1;
    while(scanf("%d%d",&yy,&xx))
    {
        if(xx==0&&yy==0)
            return 0;
        init();
        for(int i=0; i<xx; i++)
            cin>>ss[i];
        for(int i=0; i<xx; i++)
        {
            for(int j=0; j<yy; j++)
            {
                if(ss[i][j]==‘*‘)
                {
                    Bdfs(i,j);
                    top++;
                }
            }
        }
        sort(cc,cc+top);
        printf("Throw %d\n",ii++);
        printf("%d",cc[0]);
        for(int i=1; i<top; i++)
            printf(" %d",cc[i]);
        printf("\n");
        printf("\n");
    }
}


uva 657 The die is cast

上一篇:Linux 下ZooKeeper安装


下一篇:EntityFramework之领域驱动设计实践【前言】