【百炼oj】2816:红与黑

原创 2018年04月15日 08:59:27

描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下
1)‘.’:黑色的瓷砖;
2)‘#’:白色的瓷砖;
3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时,表示输入结束。
输出对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。样例输入
6 9 
....#. 
.....# 
...... 
...... 
...... 
...... 
...... 
#@...# 
.#..#. 
0 0
样例输出
45


#include<stdio.h>
char map[20][20];
int main(){
    int mark(int,int,int,int);
    int row,line,i,j;
    while(scanf("%d %d",&line,&row)){
        if(row==0||line==0)break;
        scanf("\n");
        for(i=0;i<row;i++){
            gets(map[i]);
        }
             int x,y;
         for(i=0;i<row;i++){
            for(j=0;j<line;j++)
                if(map[i][j]=='@')x=i,y=j;
         }

         mark(x,y,row,line);
         int count=0;
         for(i=0;i<row;i++){
            for(j=0;j<line;j++)
                if(map[i][j]==0)count++;
         }
         printf("%d\n",count+1);
    }
}


int mark(int i,int j,int row,int line){
    if(i-1>=0&&map[i-1][j]=='.'){
        map[i-1][j]=0;
        mark(i-1,j,row,line);
    }
    if(j-1>=0&&map[i][j-1]=='.'){
        map[i][j-1]=0;
        mark(i,j-1,row,line);
    }
    if(i+1<row&&map[i+1][j]=='.'){
        map[i+1][j]=0;
        mark(i+1,j,row,line);
    }
    if(j+1<line&&map[i][j+1]=='.'){
        map[i][j+1]=0;
        mark(i,j+1,row,line);
    }
}

百练oj2816:红与黑

总时间限制: 1000ms 内存限制: 65536kB 描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计...
  • homer12
  • homer12
  • 2014-01-21 12:06:31
  • 780

poj2816-红与黑-C语言-递归算法入门

递归算法入门 #include char places[22][22]; int steps; void slu(int x,int y) { if(places[y][x]=='.'||...
  • OrdinaryCrazy
  • OrdinaryCrazy
  • 2017-06-11 19:15:15
  • 737

百炼OJ1005

描述 Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the proce...
  • u014079441
  • u014079441
  • 2016-01-15 14:34:30
  • 241

百炼OJ:2801:填词

Alex喜欢填词游戏。填词是游戏是一个非常简单的游戏。填词游戏包括一个N * M大小的矩形方格盘和P个单词。玩家需要把每个方格中填上一个字母使得每个单词都能在方格盘上找到...
  • Kangyucheng
  • Kangyucheng
  • 2017-07-18 21:30:17
  • 221

百炼OJ1007

描述 现在有一些长度相等的DNA串(只由ACGT四个字母组成),请将它们按照逆序对的数量多少排序。 逆序对指的是字符串A中的两个字符A[i]、A[j],具有i A[j] 的性质。如字符串”ATC...
  • u014079441
  • u014079441
  • 2016-01-15 14:50:34
  • 585

OJ百练1001

#include #include #include using namespace std; string strMultiplies(const string& str1, const s...
  • a363344923
  • a363344923
  • 2014-12-07 15:42:53
  • 750

POJ 百炼 保研机试 2750:鸡兔同笼

2750:鸡兔同笼 查看提交统计提示提问 总时间限制: 1000ms 内存限制: 65536kB 描述一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外...
  • u013240812
  • u013240812
  • 2015-11-10 14:52:12
  • 513

poj 2816 红与黑

总Time Limit:  1000ms  Memory Limit:  65536k Description 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖...
  • jeg_elsker_dig
  • jeg_elsker_dig
  • 2014-03-14 17:38:32
  • 943

百练OJ:2701:与7无关的数

题目链接:描述一个正整数,如果它能被7整除,或者它的十进制表示法中某一位上的数字为7,则称其为与7相关的数.现求所有小于等于n(n &amp;lt; 100)的与7无关的正整数的平方和.输入输入为一行...
  • Kangyucheng
  • Kangyucheng
  • 2018-02-27 13:25:45
  • 60

[百练2816]红与黑(广搜)

题目描述: 总时间限制: 1000ms 内存限制: 65536kB 描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖...
  • pkuout
  • pkuout
  • 2017-02-08 13:43:14
  • 159
收藏助手
不良信息举报
您举报文章:【百炼oj】2816:红与黑
举报原因:
原因补充:

(最多只允许输入30个字)