#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的时候不能就计数吗