题目
代码:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int nmax=100+50;
const int mmax=100+50;
int map[nmax][mmax];
int d[4][2]={{1,0},{-1,0},{0,1},{0,-1}};//方向数组,对于某一节点遍历上下左右四个方向
int main(int argc, char** argv) {
int n,m;
while(cin>>n>>m){
memset(map,0,sizeof(map));
for(int i=1;i<=n;i++){ //初始化map数组
for(int j=1;j<=m;j++){
scanf("%d",&map[i][j]);
}
}
int len;//周长
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
if(map[i][j]==1){
for(int k=0;k<4;k++){//遍历上下左右四个方向
int tx=i+d[k][0];
int ty=j+d[k][1];
if(map[tx][ty]==0){//若果某一节点的节点是海
len++;
}
}
}
}
}
printf("%d",len);
}
return 0;
}