红与黑

codevs2806 红与黑

左心房为你撑大大i 提交于 2020-02-22 21:07:09
难度等级:白银 codevs2806 红与黑 题目描述 Description 有一个矩形房间,覆盖正方形瓷砖。每块瓷砖涂成了红色或黑色。一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一,但他不能移动到红砖上,只能移动到黑砖上。编写一个程序,计算他通过重复上述移动所能经过的黑砖数。 输入描述 Input Description 输入包含多个数据集。一个数据集开头行包含两个正整数W和H,W和H分别表示矩形房间的列数和行数,且都不超过20. 每个数据集有H行,其中每行包含W个字符。每个字符的含义如下所示: '.'——黑砖 '#'——红砖 '@'——男子(每个数据集仅出现一次) 两个0表示输入结束。 输出描述 Output Description 对每个数据集,程序应该输出一行,包含男子从初始瓷砖出发可到达的瓷砖数。 样例输入 Sample Input 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 11 9 .#......... .#.#######. .#.#.....#. .#.#.###.#. .#.#..@#.#. .#.#####.#. .#.......#. .#########. ........... 11 6 ..#..#..#.. ..#..#..#.. ..#..#

红与黑

孤者浪人 提交于 2020-02-22 21:05:09
codevs——2806 红与黑 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题解 题目描述 Description 有一个矩形房间,覆盖正方形瓷砖。每块瓷砖涂成了红色或黑色。一名男子站在黑色的瓷砖上,由此出发,可以移到四个相邻瓷砖之一,但他不能移动到红砖上,只能移动到黑砖上。编写一个程序,计算他通过重复上述移动所能经过的黑砖数。 输入描述 Input Description 输入包含多个数据集。一个数据集开头行包含两个正整数W和H,W和H分别表示矩形房间的列数和行数,且都不超过20. 每个数据集有H行,其中每行包含W个字符。每个字符的含义如下所示: '.'——黑砖 '#'——红砖 '@'——男子(每个数据集仅出现一次) 两个0表示输入结束。 输出描述 Output Description 对每个数据集,程序应该输出一行,包含男子从初始瓷砖出发可到达的瓷砖数。 样例输入 Sample Input 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 11 9 .#......... .#.#######. .#.#.....#. .#.#.###.#. .#.#..@#.#. .#.#####.#. .#.......#. .#########. ........

红与黑 DFS(JAVA解法)

ε祈祈猫儿з 提交于 2020-01-28 14:46:45
有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。 你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。 请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入格式 输入包括多个数据集合。 每个数据集合的第一行是两个整数 WW 和 HH,分别表示 xx 方向和 yy 方向瓷砖的数量。 在接下来的 HH 行中,每行包括 WW 个字符。每个字符表示一块瓷砖的颜色,规则如下 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 输出格式 对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 数据范围 1≤W,H≤201≤W,H≤20 输入样例: 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 输出样例: 45 import java.util.*; public class Main{ static char [][]g = new char[30][30]; static int []dx = {-1,0,1,0}; static int []dy = {0,1,0,-1}; static

红与黑 题解

大城市里の小女人 提交于 2020-01-22 15:38:22
红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 Input包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 Output对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 Sample Input 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 Sample Output 45 PS: #include<stdio.h> #include<iostream> #include<queue> #include<cstring> #define N 25 using namespace std; char mp[N][N]; int r,c,vis[N][N],cnt; int fx[4]={1,0,-1,0};

1216:红与黑

与世无争的帅哥 提交于 2019-12-04 05:17:54
题目描述】 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 【输入】 包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下: 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 【输出】 对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 【输入样例】 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 【输出样例】 45 这题和上一题深林的题很像,但是这题还是有点不一样的因为要多个vis来判断已经走过,和一个mapp来表明哪里 不能走 哪里能走 #include<bits/stdc++.h> using namespace std; const int N=30; int n,m; int u[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; int vis

【openjudge】红与黑

Deadly 提交于 2019-12-04 05:17:45
1818:红与黑 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入 包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 输出 对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 样例输入 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 样例输出 45 来源 1979 状态: Accepted #include<iostream> #include<cstdio> #include<cstring> using namespace std ; int f[ 45 ][ 45 ],n,m,i,j; int num; int head

044 红与黑 蘑菇阵

不羁岁月 提交于 2019-12-04 05:17:34
红与黑 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的(上下左右四个方向)黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入描述:输入包含多组数据。每组数据第一行是两个整数 m 和 n(1≤m, n≤20)。紧接着 m 行,每行包括 n 个字符。每个字符表示一块瓷砖的颜色,规则如下: “.”:黑色的瓷砖; “#”:白色的瓷砖; “@”:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 输出描述: 对应每组数据,输出总共能够到达多少块黑色的瓷砖。 输入 输出:45 解题思路 :下图就是这道题的原型,灰色的也代表黑色,是人物站立的地方,所求的结果是黑色方块连接的块数一共是多少个? 采用的是深度优先搜索方法 # include <iostream> # include <stdlib.h> # include <string> # include <vector> # include <math.h> # include <queue> # include <fstream> using namespace std ; class pos { public : int x ; int y ; } ; int bfs ( vector < vector < char >> & map ,

Bailian2816 红与黑【DFS】

ぃ、小莉子 提交于 2019-12-04 05:17:21
2816:红与黑 总时间限制: 1000ms 内存限制: 65536kB 描述 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入 包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 输出 对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 样例输入 6 9 …#. …# … … … … … #@…# .#…#. 0 0 样例输出 45 来源 1979 问题链接 : Bailian2816 红与黑 问题描述 :(略) 问题分析 : 这是一个可以用DFS解决的问题,不解释了。 程序说明 : 本题与参考链接是同一题,使用参考链接的程序提交就AC了。 参考链接 : POJ1979 HDU1312 ZOJ2165 Red and Black【DFS】 题记 :朋友交多了,容易遇见熟人。 AC的C语言程序(递归DFS)如下:

红与黑(信息学奥赛一本通-T1216)

ε祈祈猫儿з 提交于 2019-12-04 05:17:00
【题目描述】 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 【输入】 包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下: 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 【输出】 对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 【输入样例】 6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 0 0 【输出样例】 45 【源程序】 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define N 1001 using namespace std; int m,n; char ch; int maps[N][N]; int vis[N][N]; int dir[4][2]={{0

2816:红与黑

旧城冷巷雨未停 提交于 2019-12-04 05:16:41
2816:红与黑 总时间限制: 1000ms 内存限制: 65536kB 描述 有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。 输入 包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下 1)‘.’:黑色的瓷砖; 2)‘#’:白色的瓷砖; 3)‘@’:黑色的瓷砖,并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。 当在一行中读入的是两个零时,表示输入结束。 输出 对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。 样例输入 6 9 .... #. ..... # ...... ...... ...... ...... ...... #@... # . #.. #. 0 0 样例输出 45 #include<iostream> using namespace std ; //http://bailian.openjudge.cn/practice/2816/ //最正常的dfs了,类似于挑战程序设计里面的那个 int w,h,sx,sy,res; int dx[]={ 1 , 0 ,- 1