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的更多相关文章
随机推荐
- oracle学习笔记第三天
--DML(Data Manipulation Language)--insert关键字 插入 ---语法1.元祖值式插入(一次插入一条记录)---格式:insert into 表名(列名1,列名2. ...
- Windows Server 2012 R2服务器部署Tomcat JDK、安装Mysql以及将Java项目部署到CVM
我们平时所调试的Java Web 项目需要在本地Eclipse或者MyEclipse当中开发调试,并且部署到Tomcat上来测试,比如说笔者这里用的eclipse添加tomcat服务器, 但是这里发布 ...
- Java安装及基础01
Java特性: (1)java语言是面向对象的语言 (2)编译一次,到处运行(跨平台) (3)高性能 配置环境变量: JAVA命名规则: (1)常量命名规则:每个字母都大写(POEPLE_PRE_NO ...
- 迪杰斯特拉(Dijkstra)算法描述及理解
Dijkstra算法是一种计算单源最短无负边路径问题的常用算法之一,时间复杂度为O(n2) 算法描述如下:dis[v]表示s到v的距离,pre[v]为v的前驱结点,用以输出路径,vis[v]表示该点最 ...
- 搭建docker私有仓库
保存镜像的地方成为仓库(registry).目前有2种仓库:公共仓库和私有仓库. 最方便的是使用公共仓库上传和下载镜像,下载不需要注册,上传需要到公共仓库注册.公共仓库网站:https://hub.d ...
- java学习之方法内部类
*方法内部类 * 在类中的方法内定义一个类 * 注意: * 1 方法内部类只能在类的方法内实例化不可以在此方法外实例化 * 2 .方法内部类对象只能用所在方法体中的变量不能改,jdk1.8可以 * 以 ...
- JavaScript之jsx&react
1.Virtual DOM 1.将网页所有内容映射到一颗树形结构的层级对象模型上,浏览器提供对dom的支持,用户可以是用脚本调用dom,api来动态修改dom节点,从而达到修改网页目的,这种修改是浏览 ...
- 字节转化为结构体BytesToStruct
//结构体转字节数组 public byte[] StructToBytes (object structObj) { int size = Marshal.SizeOf (structObj);// ...
- 【编程基础】C语言常见宏定义
我们在使用C语言编写程序的时候,常常会使用到宏定义以及宏编译指令,有的可能比较常用,有的可能并不是很常用,是不是所有的C语言宏定义以及宏指令你都清楚呢? 指令 用途详细介绍 # 空指令,无任何效果 # ...
- springmvc <mvc:default-servlet-handler/> & <mvc:annotation-driven>
1. mvc 标签内部加载的基础类: 1). <mvc:view-controller> 1 org.springframework.web.servlet.handler.SimpleU ...