zoukankan      html  css  js  c++  java
  • 搜索 基础 AC 2014-01-14 15:53 170人阅读 评论(0) 收藏

    题目网址:http://haut.openjudge.cn/xiyoulianxi1/1/

    1:晶矿的个数

    总时间限制: 
    1000ms 
    内存限制: 
    65536kB
    描述

    在某个区域发现了一些晶矿,已经探明这些晶矿总共有分为两类,为红晶矿和黑晶矿。现在要统计该区域内红晶矿和黑晶矿的个数。假设可以用二维地图m[][]来描述该区域,若m[i][j]为#表示该地点是非晶矿地点,若m[i][j]为r表示该地点是红晶矿地点,若m[i][j]为b表示该地点是黑晶矿地点。一个晶矿是由相同类型的并且上下左右相通的晶矿点组成。现在给你该区域的地图,求红晶矿和黑晶矿的个数。

    输入
    第一行为k,表示有k组测试输入。
    每组第一行为n,表示该区域由n*n个地点组成,3 <= n<= 30
    接下来n行,每行n个字符,表示该地点的类型。
    输出
    对每组测试数据输出一行,每行两个数字分别是红晶矿和黑晶矿的个数,一个空格隔开。
    样例输入
    2
    6
    r##bb#
    ###b##
    #r##b#
    #r##b#
    #r####
    ######
    4
    ####
    #rrb
    #rr#
    ##bb
    
    样例输出
    2 2
    1 2





    #include<stdio.h>
    int d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
    char map[35][35];
    
    
    void clean(char c,int x,int y){
    	int i;
    	map[x][y]='#';
    	for(i=0;i<4;i++){
    		int k=x+d[i][0];
    		int b=y+d[i][1];
    		if(map[k][b]==c){
    			clean(c,k,b);
    		}
    	}
    }
    
    int main(){
    	int s,n;
    	int x,y;
    	scanf("%d",&n);
    	while(n--){
    		int numb=0;
    		int numr=0;
    		scanf("%d",&s); 
    		getchar();
    		for(x=0;x<s;x++){
    			for(y=0;y<s;y++){
    				scanf("%c",&map[x][y]);
    			}
    			getchar();
    		}
    		
    		for(x=0;x<s;x++){
    			for(y=0;y<s;y++){
    				if(map[x][y]=='b'){
    					clean('b',x,y);
    					numb++;
    				}
    				if(map[x][y]=='r'){
    					clean('r',x,y);
    					numr++;
    				}
    			}
    		}
    	
    		printf("%d %d
    ",numr,numb);
    	}
    	return 0;
    }

    搜索的简单例题,居然花了2个小时,各种小错误,有种跳楼的感觉

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    GetAwaiter和GetResult
    Sql中的小数点和保留位数
    简单工厂类
    c#种GetType()和TypeOf()的区别
    php 内置正则配置邮箱
    通过手机号获取定位
    使用navicat连接mysql 报错:2003-Can't comment to Mysql server on '192.168.X.X'(10038)
    java基础系列(七):内部类的详解
    bootstrap : 响应式导航
    CSS
  • 原文地址:https://www.cnblogs.com/you-well-day-fine/p/4671677.html
Copyright © 2011-2022 走看看