uva 657 The die is cast

题意:给定一个图  分别找出每片*中 X的数量  统计并排序

解题思路:分别标记'X' 和'*' 深搜 ,深搜‘*’和'X'在找到‘X’的时候再深搜‘X’

解题代码:

// File Name: uva572.c
// Author: darkdream
// Created Time: 2013年05月22日 星期三 19时19分08秒

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
char str[128][128];
int visit[128][128];
int mivisit[120][120];
struct node 
{
    int i , j ;

}nodes[10000],minodes[1000];
int cmp(const void *a,const void *b)
{
    return *(int *)a - *(int*)b;
}
int xadd[] = {+1,-1,0,0};
int yadd[] = {0,0,+1,-1};
int main(){

    //freopen("/home/plac/problem/input.txt","r",stdin);
    //freopen("/home/plac/problem/output.txt","w",stdout);
    int n ,m,t =  0; 
    while(scanf("%d %d",&n,&m) != EOF)
    {
        t ++;
        memset(str,0,sizeof(str));
        memset(nodes,0,sizeof(nodes));
        memset(visit,0,sizeof(visit));
        memset(mivisit,0,sizeof(mivisit));
        if(n == 0 && m == 0)
            break;
        for(int i = 1;i <= m; i ++)
        {
            scanf("%s",&str[i][1]);
        }
        int sum = 0 ;
        int k[1000];
        for(int i = 1 ; i <= m ;i ++)
        {
            for(int j = 1 ;j <= n ; j++)
            {
                if((str[i][j] == '*' || str[i][j] == 'X' )&& visit[i][j] == 0)
                {
                    memset(nodes,0,sizeof(nodes));
                    sum++;
                    nodes[1].i = i ; 
                    nodes[1].j = j ;
                    visit[i][j] =1 ;
                    int low  = 1, high = 1,temp =  0;;
                    while(low <= high )
                    {
                        for(int k = 0 ;k < 4 ;k ++)
                        {  
                            int tx = nodes[low].i + xadd[k];
                            int ty = nodes[low].j + yadd[k];
                            if((str[tx][ty] == '*' ||str[tx][ty] == 'X') && !visit[tx][ty] )
                            {
                                if(str[tx][ty] == 'X' && !mivisit[tx][ty] )
                                {
                                    temp ++;
                                    memset(minodes,0,sizeof(minodes));
                                    minodes[1].i = tx;
                                    minodes[1].j = ty;
                                    mivisit[tx][ty] = 1 ;
                                    int milow = 1, mihigh = 1; 
                                    while(milow <= mihigh )
                                    {
                                        for(int s = 0 ;s < 4 ;s ++)
                                        {  
                                            int mitx = minodes[milow].i + xadd[s];
                                            int mity = minodes[milow].j + yadd[s];
                                            if( str[mitx][mity] == 'X' && !mivisit[mitx][mity] )
                                            {
                                                mihigh++;
                                                mivisit[mitx][mity] = 1; 
                                                minodes[mihigh].i = mitx;
                                                minodes[mihigh].j = mity;
                                            }
                                        }
                                        milow++;
                                    }

                                }
                                high++;
                                visit[tx][ty] = 1; 
                                nodes[high].i = tx;
                                nodes[high].j = ty;
                            }
                        }
                        low++;
                    }
                    k[sum] = temp;
                }
            }
        }
        printf("Throw %d\n",t);
        qsort(k+1,sum,sizeof(int),cmp);
        for(int i = 1;i <= sum ;i ++)
        {
            if(i != 1)
               printf(" ");
            printf("%d",k[i]);
        }
        printf("\n\n");

    }
    return 0 ;
}
View Code

 

转载于:https://www.cnblogs.com/zyue/archive/2013/05/22/3093636.html

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值