17:最好的草
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB描述
奶牛Bessie计划好好享受柔软的春季新草。新草分布在R行C列的牧场里。它想计算一下牧场中的草丛数量。
在牧场地图中,每个草丛要么是单个“#”,要么是有公共边的相邻两个“#”。给定牧场地图,计算有多少个草丛。
例如,考虑如下5行6列的牧场地图
代码语言:javascript复制.#....
..#...
..#..#
...##.
.#....
这个牧场有5个草丛:一个在第一行,一个在第二列横跨了二、三行,一个在第三行,一个在第四行横跨了四、五列,最后一个在第五行。
输入第一行包含两个整数R和C,中间用单个空格隔开。 接下来R行,每行C个字符,描述牧场地图。字符只有“#”或“.”两种。(1 <= R, C <= 100 )输出输出一个整数,表示草丛数。样例输入
代码语言:javascript复制5 6
.#....
..#...
..#..#
...##.
.#....
样例输出
代码语言:javascript复制5
来源USACO Open 2008 Bronze
代码语言:javascript复制 1 #include<iostream>
2 #include<cstdio>
3 #include<cstdlib>
4 using namespace std;
5 char a[1001][1001];
6 int now=1;
7 int m_tot=0;
8 int z_tot=0;
9 int ans=0;
10 int main()
11 {
12 int n,m;
13 cin>>n>>m;
14 for(int i=0;i<n;i )
15 {
16 for(int j=0;j<m;j )
17 {
18 cin>>a[i][j];
19 }
20 }
21 for(int i=0;i<n;i )
22 {
23 for(int j=0;j<m;j )
24 {
25 if(a[i][j]=='#')
26 {
27 if(a[i 1][j]=='#')
28 {
29 a[i][j]='.';
30 a[i 1][j]='.';
31 ans ;
32 }
33 else if(a[i-1][j]=='#')
34 {
35 a[i][j]='.';
36 a[i 1][j]='.';
37 ans ;
38 }
39 else if(a[i][j 1]=='#')
40 {
41 a[i][j]='.';
42 a[i][j 1]='.';
43 ans ;
44 }
45 else if(a[i][j-1]=='#')
46 {
47 a[i][j]='.';
48 a[i 1][j]='.';
49 ans ;
50 }
51 else
52 {
53 a[i][j]='.';
54 ans ;
55 }
56 }
57 }
58 }
59 cout<<ans;
60 return 0;
61 }