80分求助 8 22 0 输出0 为啥会不对呢
查看原帖
80分求助 8 22 0 输出0 为啥会不对呢
444569
XIaobAIcHI楼主2020/12/10 01:40
#include<stdio.h>
# define N 500
void firelight(int a[N][N], int x1, int y1,int n);
void tonelight(int a[N][N], int x2, int y2,int n);
int main()
{
	int n, m, k;
	int time = 0;
	int a[N][N] = {0};
	int x1, x2, y1, y2;
	scanf("%d%d%d", &n, &m, &k);
	for (int i = 1; i <= m; i++) {

		scanf("%d%d", &x1, &y1);
		firelight(a, x1, y1,n);
	}
	for (int i = 1; i <= k; i++) {
		scanf("%d%d", &x2, &y2);
		tonelight(a, x2, y2,n);
	}
	for (int i = 0; i < n; i++) {
		for (int t = 0; t < n; t++) {
			if (a[i][t] == 0) {
				time++;
			}
		}
	}
	printf("%d", time);
	return 0;
}
void firelight(int a[N][N], int x1, int y1,int n) {
	int u, i, o, p;
	u = x1 - 2, i = x1 + 3, o = y1 - 2, p = y1 + 3;
	if (u <= 0) {
		u = 0;
	}
	if (i >= n) {
		i = n;
	}
	if (o <= 0) {
		o = 0;
	}
	if (p >= n) {
		p = n;
	}

	for (; o < p; o++) {
		a[x1][o] = 1;
	}
	for (; u <i ; u++) {
		a[u][y1] = 1;
	}
	a[x1 + 1][y1 + 1] = a[x1 - 1][y1 - 1] = a[x1 + 1][y1 - 1] = a[x1 - 1][y1 + 1] = 1;

}
void tonelight(int a[N][N], int x2, int y2, int n) {
	int u, i, o, p;
	u = x2 - 2, i = x2 + 3, o = y2 - 2, p = y2 + 3;
	if (u < 0) {
		u = 0;
	}
	if (i > n) {
		i = n;
	}
	if (o < 0) {
		o = 0;
	}
	if (p > n) {
		p = n;
	}
	for (; u < i; u++) {
		for (int k=o; k < p; k++) {
			a[u][k] = 1;
		}
	}
}
2020/12/10 01:40
加载中...