UVA 1030 - Image Is Everything【模拟+思维+迭代更新】

简介: 题目链接:uva 1030 - Image Is Everything 题目大意:有一个最大为n*n*n的立方体的一个不规整立体,由若干个1*1*1的小正方体构成(每一个小正方体被涂成不同的颜色),给出n,然后是该立体的前、左、后、右、上和下的视图,然后判断该立体的最大体积是多少。

题目链接:uva 1030 - Image Is Everything

题目大意:有一个最大为n*n*n的立方体的一个不规整立体,由若干个1*1*1的小正方体构成(每一个小正方体被涂成不同的颜色),给出n,然后是该立体的前、左、后、右、上和下的视图,然后判断该立体的最大体积是多少。

解题思路:首先先把所有视图上为‘.'的地方清空,然后枚举视图上不为’.'的地方,计算对应的坐标第一个不为空得位置,将其涂色(注意,若一个正方体被着两种不同的颜色,说明该位置不存在正方体)。

下面给出AC代码:

 

  1 #include <bits/stdc++.h>
  2 using namespace std;
  3 const int maxn=10;
  4 int n;
  5 char pos[maxn][maxn][maxn];
  6 char view[6][maxn][maxn];
  7 char read_char()
  8 {
  9     char ch;
 10     for(;;)
 11     {
 12         ch=getchar();
 13         if((ch>='A'&&ch<='Z')||ch=='.')
 14             return ch;
 15     }
 16 }
 17 void get(int k,int i,int j,int len,int &x,int &y,int &z)
 18 {
 19     if(k==0)
 20     {
 21         x=len;
 22         y=j;
 23         z=i;
 24     }
 25     if(k==1)
 26     {
 27         x=n-1-j;
 28         y=len;
 29         z=i;
 30     }
 31     if(k==2)
 32     {
 33         x=n-1-len;
 34         y=n-1-j;
 35         z=i;
 36     }
 37     if(k==3)
 38     {
 39         x=j;
 40         y=n-1-len;
 41         z=i;
 42     }
 43     if(k==4)
 44     {
 45         x=n-1-i;
 46         y=j;
 47         z=len;
 48     }
 49     if(k==5)
 50     {
 51         x=i;
 52         y=j;
 53         z=n-1-len;
 54     }
 55 }
 56 int main()
 57 {
 58     while(scanf("%d",&n)!=EOF)
 59     {
 60         if(n==0)
 61             break;
 62         for(int i=0;i<n;i++)
 63         {
 64             for(int k=0;k<6;k++)
 65             {
 66                 for(int j=0;j<n;j++)
 67                 {
 68                     view[k][i][j]=read_char();
 69                 }
 70             }
 71         }
 72         for(int i=0;i<n;i++)
 73         {
 74             for(int j=0;j<n;j++)
 75             {
 76                 for(int k=0;k<n;k++)
 77                 {
 78                     pos[i][j][k]='#';
 79                 }
 80             }
 81         }
 82         for(int k=0;k<6;k++)
 83         {
 84             for(int i=0;i<n;i++)
 85             {
 86                 for(int j=0;j<n;j++)
 87                 {
 88                     if(view[k][i][j]=='.')
 89                     {
 90                         for(int p=0;p<n;p++)
 91                         {
 92                             int x,y,z;
 93                             get(k,i,j,p,x,y,z);
 94                             pos[x][y][z]='.';
 95                         }
 96                     }
 97                 }
 98             }
 99         }
100         for(;;)
101         {
102             bool done=true;
103             for(int k=0;k<6;k++)
104             {
105                 for(int i=0;i<n;i++)
106                 {
107                     for(int j=0;j<n;j++)
108                     {
109                         if(view[k][i][j]!='.')
110                         {
111                             for(int p=0;p<n;p++)
112                             {
113                                 int x,y,z;
114                                 get(k,i,j,p,x,y,z);
115                                 if(pos[x][y][z]=='.')
116                                     continue;
117                                 if(pos[x][y][z]=='#')
118                                 {
119                                     pos[x][y][z]=view[k][i][j];
120                                     break;
121                                 }
122                                 if(pos[x][y][z]==view[k][i][j])
123                                     break;
124                                 pos[x][y][z]='.';
125                                 done=false;
126                             }
127                         }
128                     }
129                 }
130             }
131             if(done)
132                 break;
133         }
134         int ans=0;
135         for(int i=0;i<n;i++)
136         {
137             for(int j=0;j<n;j++)
138             {
139                 for(int k=0;k<n;k++)
140                 {
141                     if(pos[i][j][k]!='.')
142                         ans++;
143                 }
144             }
145         }
146         printf("Maximum weight: %d gram(s)\n",ans);
147     }
148     return 0;
149 }

 

目录
相关文章
|
3月前
|
Serverless PyTorch 异构计算
函数计算操作报错合集之如何解决使用sdxl底模出不了图并报503错误
在使用函数计算服务(如阿里云函数计算)时,用户可能会遇到多种错误场景。以下是一些常见的操作报错及其可能的原因和解决方法,包括但不限于:1. 函数部署失败、2. 函数执行超时、3. 资源不足错误、4. 权限与访问错误、5. 依赖问题、6. 网络配置错误、7. 触发器配置错误、8. 日志与监控问题。
|
4月前
画图,综合例子
【6月更文挑战第23天】画图,综合例子。
38 9
|
5月前
|
存储 C++ 容器
由浅到深-模拟实现list
由浅到深-模拟实现list
|
5月前
|
机器学习/深度学习 算法 vr&ar
【Python强化学习】动态规划法中策略迭代和值迭代求解冰湖问题实战(图文解释 附源码)
【Python强化学习】动态规划法中策略迭代和值迭代求解冰湖问题实战(图文解释 附源码)
121 0
|
5月前
|
程序员 API
Compose:警惕Loop(遍历),图文并茂带你深度释疑,解决的不仅是性能问题
Compose:警惕Loop(遍历),图文并茂带你深度释疑,解决的不仅是性能问题
111 0
|
算法 索引
LeetCode算法小抄--田忌赛马问题、游戏随机匹配机制问题
LeetCode算法小抄--田忌赛马问题、游戏随机匹配机制问题
|
小程序
如何做一个俄罗斯方块7:消除判断和处理
嗨!大家好,我是小蚂蚁。今天我们继续来了解下一个环节:消除判断和处理。因为消除判断和消除处理都比较简单,所以,这里我们就将这两个环节合并在一起讲解。
161 0
|
Python
更好的print :嫌弃print太单调 那么来试试这几种方法吧
更好的print :嫌弃print太单调 那么来试试这几种方法吧
更好的print :嫌弃print太单调 那么来试试这几种方法吧
|
人工智能 芯片 Windows
画图细节不会改?那就用 AI 吧!
很多读者会在群里问一些绘图细节的问题,而对于这些问题,小编也不大会啊!实在没办法就用Adobe Illustator (AI) 来帮忙吧。今天就简单介绍下,如何安装和使用这个软件。
270 0
画图细节不会改?那就用 AI 吧!
|
JavaScript
【重温基础】3.循环和迭代
【重温基础】3.循环和迭代
116 0