题目:https://acmoj.cn/JudgeOnline/problem.php?cid=1024&pid=4
注.本文主要作为自己的学习笔记。
题目描述
要得到这座岛屿还需要先计算出岛屿的周长,请你帮帮他算出来,让他得到这座岛屿。
输入格式:
第一行输入两个正整数n,m,表示地图的长和宽。
接下来的n行每行m个数字(0或1);0代表水,1代表陆地。
输出格式:
岛的周长。
输入样例1
4 4
0100
1110
0100
1100
输出样例1
16
题目类型: 简单、图的入门
解题思路:
搜索的入门应用,非常简单,还用不到递归搜索函数,注意代码中对一个格子四周的搜索。
代码:
#include <iostream>
using namespace std;
int main ()
{
char a[1010][1010];
int n,i,j,m,k,x,y,num=0;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
a[i][j]=0;
for(i=0;i<n;i++)
scanf("%s",a[i]);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(a[i][j]=='1')
{
if(a[i+1][j]=='0'||i+1==n)num++;
if(a[i-1][j]=='0'||i-1<0)num++;
if(a[i][j+1]=='0'||j+1==n)num++;
if(a[i][j-1]=='0'||j-1<0)num++;
}
}
printf("%d\n",num);
return 0;
}
PS :本博客属于中国石油大学胜利学院ACM协会所有!
By:朱天宇