欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

Oil Deposits 石油储量

发布时间:2024/5/14 60 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Oil Deposits 石油储量 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
GeoSurvComp地质调查公司负责检测地下石油矿床。GeoSurvComp 一次处理一个大的矩形土地区域,并创建一个网格,将土地划分为多个方形地块。然后,它分别分析每个地块,使用传感设备确定该地块是否含有石油。含有油的地块称为口袋。如果两个口袋相邻,则它们是同一油沉积物的一部分。油沉积物可能相当大,可能包含许多口袋。您的工作是确定网格中包含多少种不同的油藏。

输入

输入包含一个或多个网格。每个网格都以一条包含 m 和 n 的线开头,m 和 n 是网格中的行数和列数,由单个空格分隔。如果m = 0,则表示输入结束;否则 1 <= m <= 100 和 1 <= n <= 100。在此之后是 m 行,每行包含 n 个字符(不计算行尾字符)。每个字符对应于一个图,并且是"*",表示没有油,或"@",表示油袋。
 

输出

在水平、垂直或对角线上相邻。一个油沉积物不会包含超过100个口袋。

示例输入

1 1 * 3 5 *@*@* **@** *@*@* 1 8 @@****@* 5 5 ****@ *@@*@ *@**@ @@@*@ @@**@ 0 0示例输出 0 1 2 2 #include<iostream>using namespace std; char num[105][105]; int c, d; int mms(int a,int b) {if(num[a][b]=='*')return 0;else num[a][b]='*';if(a>0)mms(a-1,b);if(b>0)mms(a,b-1);if(a>0&&b>0)mms(a-1,b-1);if(a>0&&b<d)mms(a-1,b+1);if(b<d)mms(a,b+1);if(a<c)mms(a+1,b);if(a<c&&b>0)mms(a+1,b-1);if(a<c&&b<d)mms(a+1,b+1);} int main() {int m,n, i, j ,k,max;while(scanf("%d%d\n", &m, &n)!=EOF, m!=0){max=0;c=m;d=n;c--;d--;for(i=0;i<m;i++)gets(num[i]);for(i=0;i<m;i++)for(j=0;j<n;j++)if(num[i][j]=='@'){mms(i,j);max++;}cout<<max<<endl;}return 0; }

总结

以上是生活随笔为你收集整理的Oil Deposits 石油储量的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。