求助,已经解决越界问题还是WA仨
查看原帖
求助,已经解决越界问题还是WA仨
170288
AdoShan楼主2024/5/27 12:12

这还有啥问题吗?越界也解决了

#include <iostream>
#include <vector>

using namespace std;

int n, m, k, x, y, cnt = 0;
//vector< vector<int> > v(n, vector<int>(n, 0));
int v[105][105] = { 0 };

// 检查是否越界
int check(int x) {
	if (x < 0)
		return 0;
	else if (x > n)
		return n;
	return x;
}
int main() {
	cin >> n >> m >> k;
	//处理火把
	for (int i = 0; i < m; ++i) {
		cin >> x >> y;
		//标记同一行的四个
		for (int j = x - 2; j <= x + 2; ++j)
			v[x][check(j)] = 1;
		//标记同一列的四个
		for (int j = y - 2; j <= y + 2; ++j)
			v[check(j)][y] = 1;
		//处理四个角
		v[check(x - 1)][check(y - 1)] = 1;
		v[check(x - 1)][check(y + 1)] = 1;
		v[check(x + 1)][check(y - 1)] = 1;
		v[check(x + 1)][check(y + 1)] = 1;
	}
	//处理萤石
	//if (k)
	for (int i = 0; i < k; ++i) {
		cin >> x >> y;
		for (int j = x - 2; j <= x + 2; ++j)
			for (int k = y - 2; k <= y + 2; ++k)
				v[check(j)][check(k)] = 1;
	}
	//统计未标记个数
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= n; ++j)
			if (!v[i][j])
				++cnt;
	cout << cnt;
	return 0;
}

2024/5/27 12:12
加载中...