有几个不懂的地方
查看原帖
有几个不懂的地方
1239657
xrpo0楼主2023/12/31 14:47
#include <stdio.h>

int main() {
	int w, x, h;
	int q;
	int cnt = 0;
	scanf("%d %d %d", &w, &x, &h);
	scanf("%d", &q);
	int a[20][20][20]={0} ;
	for (int n = 0; n < q; n++) {
		int x1, y1, z1, x2, y2, z2;
		scanf("%d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2);
		for (int i = x1; i <= x2; i++) {
			for (int j = y1; j <= y2; j++) {
				for (int k = z1; k <= z2; k++) {
					a[i][j][k] = -1;
				}
			}
		}
	}

	for (int i = 0; i < w; i++) {
		for (int j = 0; j <x; j++) {
			for (int k = 0; k <h; k++) {
				if (a[i][j][k] != -1) {
					cnt++;
				}
			}
		}
	}
	printf("%d", cnt);

	return 0;
}

为什么下半部分不可以遍历到w,x,h这个范围找出没有被标记的有多少个然后直接输出?

#include <stdio.h>

int main() {
	int w, x, h;
	int q;
	int cnt = 0;
	scanf("%d %d %d", &w, &x, &h);
	scanf("%d", &q);
	int a[20][20][20]={0} ;
	for (int n = 0; n < q; n++) {
		int x1, y1, z1, x2, y2, z2;
		scanf("%d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2);
		for (int i = x1; i <= x2; i++) {
			for (int j = y1; j <= y2; j++) {
				for (int k = z1; k <= z2; k++) {
					a[i][j][k] = -1;
				}
			}
		}
	}

	for (int i = 0; i < 20; i++) {
		for (int j = 0; j <20; j++) {
			for (int k = 0; k <20; k++) {
				if (a[i][j][k] == -1) {
					cnt++;
				}
			}
		}
	}
	printf("%d", w*h*x-cnt);

	return 0;
}

第二个为什么还要遍历一遍找-1有多少个,标记-1的时候不能直接计数吗?

2023/12/31 14:47
加载中...