网站设计一般多少钱一个页面,深圳建设工程价格信息网站,做app需要什么技术,沙田仿做网站有一间长方形的房子#xff0c;地上铺了红色、黑色两种颜色的正方形瓷砖。
你站在其中一块黑色的瓷砖上#xff0c;只能向相邻#xff08;上下左右四个方向#xff09;的黑色瓷砖移动。
请写一个程序#xff0c;计算你总共能够到达多少块黑色的瓷砖。
输入格式
输入包…有一间长方形的房子地上铺了红色、黑色两种颜色的正方形瓷砖。
你站在其中一块黑色的瓷砖上只能向相邻上下左右四个方向的黑色瓷砖移动。
请写一个程序计算你总共能够到达多少块黑色的瓷砖。
输入格式
输入包括多个数据集合。
每个数据集合的第一行是两个整数 WW 和 HH分别表示 xx 方向和 yy 方向瓷砖的数量。
在接下来的 HH 行中每行包括 WW 个字符。每个字符表示一块瓷砖的颜色规则如下
1‘.’黑色的瓷砖 2‘#’红色的瓷砖 3‘’黑色的瓷砖并且你站在这块瓷砖上。该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时表示输入结束。
输出格式
对每个数据集合分别输出一行显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。
数据范围
1≤W,H≤201≤W,H≤20
输入样例
6 9
....#.
.....#
......
......
......
......
......
#...#
.#..#.
0 0输出样例 45
#include cstring
#include iostream
#include algorithmusing namespace std;const int N 25;int n, m;
char g[N][N];
bool st[N][N];int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1};int dfs(int x, int y)
{int cnt 1;st[x][y] true;for (int i 0; i 4; i ){int a x dx[i], b y dy[i];if (a 0 || a n || b 0 || b m) continue;if (g[a][b] ! .) continue;if (st[a][b]) continue;cnt dfs(a, b);}return cnt;
}int main()
{while (cin m n, n || m){for (int i 0; i n; i ) cin g[i];int x, y;for (int i 0; i n; i )for (int j 0; j m; j )if (g[i][j] ){x i;y j;}memset(st, 0, sizeof st);cout dfs(x, y) endl;}return 0;
}
#includeiostream
#includecstringusing namespace std;const int N30;char g[N][N];
int n,m,cnt;
int dx[4]{0,1,0,-1},dy[4]{1,0,-1,0};void dfs(int x,int y)
{g[x][y]#;cnt;for(int i0;i4;i){int axdx[i],bydy[i];if(a0 || an || b0 || bm || g[a][b]#) continue;dfs(a,b);}
}int main()
{while(cinmn,n||m){cnt0;for(int i0;in;i) scanf(%s,g[i]);int x,y,flag0;for(int i0;in;i){for(int j0;jm;j)if(g[i][j]){xi,yj;flag1;}if(flag) break;}dfs(x,y);cout cnt endl;}return 0;
}
#includebits/stdc.h
using namespace std;
int c1,n,m;
char a[21][21];
void dfs(int i,int j)
{if(a[i][j]#||i1||j1||in||jm)return;if(a[i][j].)c;a[i][j]#;dfs(i1,j);dfs(i-1,j);dfs(i,j1);dfs(i,j-1);
}
int main()
{while(cinmn){c1;if(n0m0)break;int p0,q0;for(int i1;in;i)for(int j1;jm;j){cina[i][j];if(a[i][j])pi,qj;}dfs(p,q);coutc\n;}
}
bfs
#includeiostream
#includecstring
#includequeue
#define x first
#define y secondusing namespace std;
typedef pairint,int PII;const int N30;char g[N][N];
int n,m;
int dx[4]{0,1,0,-1},dy[4]{1,0,-1,0};
bool st[N][N];int bfs(int x,int y)
{int cnt1;queuePII q;q.push({x,y});while(q.size()){PII tq.front();q.pop();int xt.x,yt.y;for(int i0;i4;i){int axdx[i],bydy[i];if(a0 || an || b0 || bm) continue;if(st[a][b]) continue;if(g[a][b]!.) continue;st[a][b]true;q.push({a,b});cnt;}}return cnt;
}int main()
{while(cinmn,n||m){memset(st,0,sizeof st);for(int i0;in;i) scanf(%s,g[i]);int x,y,flag0;for(int i0;in;i){for(int j0;jm;j)if(g[i][j]){xi,yj;flag1;}if(flag) break;}cout bfs(x,y) endl;}return 0;
}