题解 P5729 【【深基5.例7】工艺品制作】
-
这道题先设置一个三维数组,表示该物体的长宽高。
-
然后每一次读入一组对角线,就把该范围内的数组数据标记为
1 。 -
最后只要全部扫一遍判断还剩几个为
0 的数组数据,表示还剩多少块。
注意,输入对角线后的范围内的方块可能在之前已被清除,千万不要重复清除哦!
贴代码了:
#include <iostream>
#include <cmath>
using namespace std;
const int MAX = 30;
int sq[MAX][MAX][MAX] = {0};//一开始均默认为0,表示方块还在
int main()
{
int a,b,c,n,ans = 0;
cin>>a>>b>>c>>n;
while(n--)
{
int x1,y1,z1,x2,y2,z2;
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++) sq[i][j][k] = 1;//该范围的方块标记为1,表示已被切除
}
for(int i = 1;i <= a;i++)
for(int j = 1;j <= b;j++)
for(int k = 1;k <= c;k++)
if(sq[i][j][k] == 0) ans++;//判断该方块是否还在
cout<<ans<<endl;//输出答案
return 0;
}