LA2995 Image is everything
Posted buerdepepeqi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LA2995 Image is everything相关的知识,希望对你有一定的参考价值。
蓝书P12
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; #define REP(i,n) for(int i=0;i<(n);i++) const int maxn = 10; int n; char pos[maxn][maxn][maxn]; char view[6][maxn][maxn]; char read_cahr(){ char ch; for(;;){ ch=getchar(); if((ch>=‘A‘&&ch<=‘Z‘)||ch==‘.‘) return ch; } } void get(int k,int i,int j,int len,int &x,int &y,int &z){ if(k==0){ x=len; y=j; z=i;} if(k==1){ x=n-1-j; y=len; z=i;} if(k==2){ x=n-1-len; y=n-j-1; z=i;} if(k==3){ x=j; y=n-1-len; z=i;} if(k==4){ x=n-i-1; y=j; z=len;} if(k==5){ x=i; y=j; z=n-1-len;} } int main(){ while(scanf("%d",&n)==1&&n){ REP(i,n) REP(k,6) REP(j,n) view[k][i][j]=read_cahr(); REP(i,n) REP(j,n) REP(k,n) pos[i][j][k]=‘#‘; REP(k,6) REP(i,n) REP(j,n) if(view[k][i][j]==‘.‘) REP(p,n){ int x,y,z; get(k,i,j,p,x,y,z); pos[x][y][z]=‘.‘; } for(;;){ bool done=true; REP(k,6) REP(i,n) REP(j,n) if(view[k][i][j]!=‘.‘){ REP(p,n){ int x,y,z; get(k,i,j,p,x,y,z); if(pos[x][y][z]==‘.‘) continue; if(pos[x][y][z]==‘#‘){ pos[x][y][z]=view[k][i][j]; break; } if(pos[x][y][z]==view[k][i][j]) break; pos[x][y][z]=‘.‘; done=false; } } if(done) break; } int ans=0; REP(i,n) REP(j,n) REP(k,n) if(pos[i][j][k]!=‘.‘) ans++; printf("Maximum weight: %d gram(s) ",ans); } return 0; }
以上是关于LA2995 Image is everything的主要内容,如果未能解决你的问题,请参考以下文章
Uva LV 2995 Image Is Everything 模拟,坐标映射,视图映射 难度: 1