2 条题解
-
0
#include <stdio.h> int main() { int a,b,c; int v[21][21][21]={0}; scanf("%d%d%d",&a,&b,&c); int i1,i2,i3; for(i1=1;i1<=a;i1++) for(i2=1;i2<=b;i2++) for(i3=1;i3<=c;i3++) v[i1][i2][i3]=1; int times,time; int x1,x2,y1,y2,z1,z2; scanf("%d",×); for(time=1;time<=times;time++) { scanf("%d%d%d%d%d%d",&x1,&y1,&z1,&x2,&y2,&z2); for(i1=x1;i1<=x2;i1++) for(i2=y1;i2<=y2;i2++) for(i3=z1;i3<=z2;i3++) v[i1][i2][i3]=0; } int sum=0; for(i1=1;i1<=a;i1++) for(i2=1;i2<=b;i2++) for(i3=1;i3<=c;i3++) sum+=v[i1][i2][i3]; printf("%d",sum); } //有点小抽象,其他都还好
-
0
解释参考注释。
#include <cstdio> bool cube[21][21][21];//三维立方体空间 int opCutting(int x1, int y1, int z1, int x2, int y2, int z2){ //切割操作函数 for(int i = x1; i <= x2; i++){ for(int j = y1; j <= y2; j++){ for(int k = z1; k <= z2; k++){ if(cube[i][j][k]){ //如果这部分之前未被切掉(状态为true),则切掉(状态置为false) cube[i][j][k] = false; } } } } return 0; } int opInitCube(int x, int y, int z){ for(int i = 1; i <= x; i++){ for(int j = 1; j <= y; j++){ for(int k = 1; k <= z; k++){ //初始化未切割立方体,全部状态置为true cube[i][j][k] = true; } } } return 0; } int main(){ int w, x, h, q, x1, y1, z1, x2, y2, z2, ans = 0; scanf("%d %d %d", &w, &x, &h);//读入初始立方体参数 opInitCube(w, x, h);//初始化立方体 scanf("%d", &q);//读入操作次数 for(int _ = 1; _ <= q; _++){//切割,启动! scanf("%d %d %d %d %d %d", &x1, &y1, &z1, &x2, &y2, &z2); opCutting(x1, y1, z1, x2, y2, z2); } for(int i = 1; i <= w; i++){ for(int j = 1; j <= x; j++){ for(int k = 1; k <= h; k++){ //计算还有多少未切割的小方块,即状态为true的格子 if(cube[i][j][k]){ ans++; } } } } printf("%d", ans); return 0; }
- 1
信息
- ID
- 99
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 313
- 已通过
- 69
- 上传者