ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Coast Length——奇奇怪怪的OJ

2022-08-16 22:02:11  阅读:172  来源: 互联网

标签:ch OJ int while Coast Length bool 1005 getchar


Hi,我是OIer一枚。
我太弱了


题目链接:

题面

问海岸的长度和。
其中,岛中湖,岛中湖中岛……不算。

思路

我们在整个图外面加一圈 $ 0 $,这样我们就能轻松处理岛了。
从最外圈遍历 $ 0 $ ,遍历到的都是海。
然后,对于每块海,看它周围有几个陆地。
每一个陆地就 $ + 1 $,加一条边界嘛。

代码

#include <bits/stdc++.h>
using namespace std;

int read() {
	int f = 0, w = 1; char ch = getchar();
	while ('0' > ch || ch > '9') if (ch == '-') w = -1, ch = getchar();
	while ('0' <= ch && ch <= '9') f = f * 10 + (ch - '0'), ch = getchar();
	return f * w;
}

void write(int x) {
	if (x < 0) putchar('-'), x = -x;
	char stk[35]; int cnt = 0;
	do {
		stk[cnt++] = x % 10 + '0', x /= 10;
	} while (x);
	for (int i = cnt - 1; i >= 0; i--) putchar(stk[i]);
	putchar(' ');
}

bool mp[1005][1005];
bool vis[1005][1005];

int n, m;

void dfs(int i, int j) {
	if (0 <= i && i <= n + 1 && 0 <= j && j <= m + 1 && !mp[i][j] && !vis[i][j]) {
		vis[i][j] = 1;
		dfs(i + 1, j);
		dfs(i - 1, j);
		dfs(i, j + 1);
		dfs(i, j - 1);
	}
}

int main() {
	n = read(), m = read();
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			if (getchar() == '1') {
				mp[i][j] = 1;
			}
		}
		getchar();
	}
	dfs(0, 0);
	int ans = 0;
	for (int i = 0; i <= n + 1; i++) {
		for (int j = 0; j <= m + 1; j++) {
			if (vis[i][j]) {
				ans += (i == 0) ? (0) : (mp[i - 1][j]);
				ans += (i == n + 1) ? (0) : (mp[i + 1][j]);
				ans += (j == 0) ? (0) : (mp[i][j - 1]);
				ans += (j == m + 1) ? (0) : (mp[i][j + 1]);
			}
		}
	}
	write(ans);
	return 0;
}

标签:ch,OJ,int,while,Coast,Length,bool,1005,getchar
来源: https://www.cnblogs.com/AProblemSolver/p/16593142.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有