原题链接
分析:c++中的数组不仅可以支持二维数组,还能建立更多维数的数组。在本例中,建立了一个三位数组v[20][20][20]来模拟立方体的每一个小方块的情况,记录每个小方块是否还存在。每次操作就是把三维各在一个区间内的小方块全部消除,类似于上一个例题的覆盖地毛毯,把这个三维数组三维在一个区间内的值全部赋值为0.当进行完所有操作之后,使用三重循环枚举每个小方块,看看每个位置是否为1即可,如果是1,答案参加1,最后输出答案。
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int v[22][22][22],w,x,h,q,x1,x2,y1,y2,z1,z2,ans;
cin>>w>>x>>h>>q;
for(int i=1;i<=w;i++)
for(int j=1;j<=x;j++)
for(int k=1;k<=h;k++)
v[i][j][k]=1;
while(q--){
cin>>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++)
v[i][j][k]=0;
}
for(int i=1;i<=w;i++)
for(int j=1;j<=x;j++)
for(int k=1;k<=h;k++)
ans+=v[i][j][k];
cout<<ans<<endl;
return 0;
}