UVA1030 Image Is Everything
思路
如果两个面看到颜色不同,则这个正方体一定要被删掉
然后依次考虑每个面即可
注意坐标的映射
代码
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
char see[20][20][20],mat[20][20][20],n;
void get(int pos,int i,int j,int k,int &x,int &y,int &z){
if(pos==1){
x=k;
y=j;
z=i;
}
else if(pos==2){
x=n-j+1;
y=k;
z=i;
}
else if(pos==3){
x=n-k+1;
y=n-j+1;
z=i;
}
else if(pos==4){
x=j;
y=n-k+1;
z=i;
}
else if(pos==5){
x=n-i+1;
y=j;
z=k;
}
else{
x=i;
y=j;
z=n-k+1;
}
}
char get_nxt(void){
char c=getchar();
while(c==' '||c=='\n'||c=='\r'||c=='\0')
c=getchar();
return c;
}
int main(){
while(scanf("%d",&n)==1&&n){
memset(see,0,sizeof(see));
memset(mat,0,sizeof(mat));
for(int i=1;i<=n;i++){
for(int j=1;j<=6;j++)
for(int k=1;k<=n;k++)
see[j][i][k]=get_nxt();
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
mat[i][j][k]='#';
for(int i=1;i<=6;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(see[i][j][k]=='.')
for(int p=1;p<=n;p++){
int x,y,z;
get(i,j,k,p,x,y,z);
mat[x][y][z]='.';
}
while(1){
int isok=true;
for(int i=1;i<=6;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(see[i][j][k]!='.')
for(int p=1;p<=n;p++){
int x,y,z;
get(i,j,k,p,x,y,z);
if(mat[x][y][z]=='.')
continue;
if(mat[x][y][z]=='#'){
mat[x][y][z]=see[i][j][k];
break;
}
if(mat[x][y][z]==see[i][j][k])
break;
mat[x][y][z]='.';
isok=false;
}
if(isok)
break;
}
int ans=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
if(mat[i][j][k]!='.')
ans++;
printf("Maximum weight: %d gram(s)\n",ans);
}
return 0;
}
UVA1030 Image Is Everything的更多相关文章
随机推荐
- docker安装,err:exit status 255,提示找不到虚拟机IP
我遇到这个问题是因为,BIOS没有打开虚拟化技术,导致虚拟机无法成功创建,自然找不到IP. 解决: 1.进入BIOS,高级选项卡下,找到虚拟化技术开关,打开即可.具体做法,可搜网文. 2.删除原来自动 ...
- 新建的小程序没有app.js,app.json等文件
因为在创建的时候没有勾选 建立普通快速启动模板,而我在创建的时候没有发现有这个选项可以选择. 解决办法:把之前创建过的文件夹整个删掉,不能只删内容.然后再重新新建项目,就会出现 建立普通快速启动模板 ...
- python写算法中的栈
########### 栈的使用 ############### class StackFullError(Exception): pass class StackEmptyError(Excepti ...
- Redis的数据结构之Set
存储Set 和List类型不同的是,Set集合中不允许出现重复的元素 Set可包含的最大元素数量是4294967295 存储set常用命令: 添加/删除元素 获取集合中的元素 集合中的差集运算 集合中 ...
- 内网gitlab11.2升级至11.4.5
当前gitlab版本 宿主机是一台ubuntu 运行备份命令 sudo gitlab-rake gitlab:backup:create STRATEGY=copy 升级命令 sudo apt-get ...
- Kafka笔记8(管理Kafka)
使用kafka-topic.sh工具可以执行大部分操作 创建/修改/删除/查看集群里的主题.要使用全部功能,需要通过--zookeeper参数提供zookeerper连接字符串 创建主题: 创建主 ...
- UGUI中UI与模型混合显示
法一: 利用Render Texture 在project面板创建 在面板中在创建一个Camera,对准要显示的模型 对Render Texture 进行设置 在Canvas下创建RawImage 就 ...
- 在vue中使用echarts图表
在vue中使用echarts图表 转载请注明出处:https://www.cnblogs.com/wenjunwei/p/9815290.html 安装vue依赖 使用npm npm instal ...
- it入门之:学会使用Git 分布式版本控制工具
环境:window 工具:git & TortoiseGit 下载安装以及配置环境变量 :略略略 创建Github账户:登录https://github.com/用自己的常用邮箱创建账户,用来 ...
- REST framework---基于类的视图
一.程序设计 1.路由设计 from django.conf.urls import url from django.contrib import admin from app import view ...