• XDOJ1327


    XDOJ1327

    题目描述

    第七兽分为四个亚种,我们把它们记为 A, B, C, D。每只兽需要至少一个格子作为自己的领地。如果两只相邻的兽是一个亚种的,它们会融合成一只兽,这只兽将会占据以前两只兽的领地。 
    珂朵莉想问威廉,在一个 n * m 的 铺满第七兽的四个亚种 的矩形里面,到底有多少只第七兽的四个亚种。

    输入

    第一行包括两个数 n, m, 表示这个矩形的大小。 
    剩下行描述了这个矩形内兽的分布情况。

    输出

    输出一行四个数,表示第七兽 亚种 A, B, C, D 的个数,每两个数之间有一个空格。

    样例输入

    4 7
    DDDDDDD
    DABABAD
    DBACACD
    DDDDDDD

    样例输出

    5 3 2 1

    示例代码

    #include <iostream>
    #include <cstring>
    #define N 55
    using namespace std;
    char data[N][N];
    void dfs(int x,int y,char s)
    {
    	if(data[x][y]==s)
    	{
    		data[x][y] = 'E';
    		dfs(x+1,y,s);
    		dfs(x-1,y,s);
    		dfs(x,y+1,s);
    		dfs(x,y-1,s);
    	}
    }
    int main()
    {
    	int m,n;
        cin >> m >> n;
        int resu = 0;
        memset(data,0,sizeof(data));
        for(int i = 1 ; i <= m ;i++)
        	for(int j = 1 ; j <=n ;j++)		cin >>data[i][j];
        for(int i = 1 ; i <= m ;i++)
        	for(int j = 1 ; j <=n ;j++)		if(data[i][j]=='A') dfs(i,j,'A'),resu++;
    		cout << resu << " ";
    	resu  = 0;
    	for(int i = 1 ; i <= m ;i++)
        	for(int j = 1 ; j <=n ;j++)		if(data[i][j]=='B') dfs(i,j,'B'),resu++;
    		cout << resu << " ";
    	resu  = 0;
    	for(int i = 1 ; i <= m ;i++)
        	for(int j = 1 ; j <=n ;j++)		if(data[i][j]=='C') dfs(i,j,'C'),resu++;
    		cout << resu << " ";
    	resu  = 0;
    	for(int i = 1 ; i <= m ;i++)
        	for(int j = 1 ; j <=n ;j++)		if(data[i][j]=='D') dfs(i,j,'D'),resu++;
    		cout << resu ;	
    	return 0;
    }

    总结

    笔者的代码通常长度上比较短,而且没有无用头文件,总体来说,这道题是一道比较常见的dfs,这道题据说用队列写也很简单,笔者有空尝试一下,稍后代码附上。

    PS:这倒是暑训签到题,题号为B,笔者会尽力在8.1前完成其他题解。

    透过泪水看到希望
  • 相关阅读:
    如何在Dynamics CRM 2011 的窗体表单上加载报表
    .Net程序员面试所需要的一些技术准备
    javascript常用数组算法总结
    jquery技巧总结
    《将博客搬至CSDN》
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    jQuery编程的最佳实践
    SQL 存储过程、触发器
    T--SQL基本编程(变量的定义、变量的赋值/取值,分支语句,循环语句)
    SQL server表连接
  • 原文地址:https://www.cnblogs.com/ronnielee/p/9495161.html
Copyright © 2020-2023  润新知