若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

3146: 搜索基础之红与黑

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,566

题目描述

有一间长方形的房子,地上铺了白色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

输入

包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下
1)‘.’:黑色的瓷砖;
2)‘#’:白色的瓷砖;
3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时,表示输入结束。

输出

对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。

样例输入

6 9 
....#.
.....#
......
......
......
......
......
#@...#
.#..#.
0 0

样例输出

45

参考代码

#include <stdio.h>
#define Max 20
char d[Max][Max];
int r,c;
int count(int i,int j) 
{
    if(i<0||j<0||i>=r||j>=c)
            return 0; else if(d[i][j]=='#')
            return 0; else 
    {
        d[i][j]='#';
        return 1+count(i+1,j)+count(i,j-1)+count(i-1,j)+count(i,j+1);
    }
}
int main() 
{
    int i,j;
    while(scanf("%d%d",&c,&r)!=EOF&&r!=0&&c!=0) 
    {
        for (i=0;i<r;i++)
                        scanf("%s",d[i]);
        for (i=0;i<r;i++) 
        {
            for (j=0;j<c;j++) 
            {
                if(d[i][j]=='@')
                                    printf("%dn",count(i,j));
            }
        }
    }
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Dreams孤独患者 原站点 Skip
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist