UVALive 2995 Image Is Everything 策略问题
2013-07-17 10:50
253 查看
#include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std; char pos[10][10][10]; char view[6][10][10]; int n; void get(int k,int i,int j,int len,int &x,int &y,int &z) {//根据6个视图的不同性质得到x,y,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-1-j;z=i;} if(k==3){x=j;y=n-1-len;z=i;} if(k==4){x=n-1-i;y=j;z=len;} if(k==5){x=i;y=j;z=n-1-len;} } char getch() { char ch; while(true) { ch=getchar(); if(ch>='A'&&ch<='Z'||ch=='.') return ch; } } int main() { while(scanf("%d",&n)!=EOF) { int i,j,k,p; if(n==0) break; for(i=0;i<n;i++) for(k=0;k<6;k++) for(j=0;j<n;j++) view[k][i][j]=getch(); for(i=0;i<n;i++) for(j=0;j<n;j++) for(k=0;k<n;k++) pos[i][j][k]='#'; for(k=0;k<6;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) if(view[k][i][j]=='.') for(p=0;p<n;p++) { int x,y,z; get(k,i,j,p,x,y,z);//根据视图获得相应点的三维坐标x,y,z pos[x][y][z]='.'; } for(;;)//每次查找找到矛盾的两个小方格,删除,直到不存在矛盾为止 { bool flag=true; for(k=0;k<6;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) if(view[k][i][j]!='.') { for(p=0;p<n;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]='.';//颜色矛盾,删除 flag=false; } } if(flag) break; } int s=0; for(i=0;i<n;i++) for(j=0;j<n;j++) for(k=0;k<n;k++) if(pos[i][j][k]!='.')s++; printf("Maximum weight: %d gram(s)\n",s); } return 0; }
相关文章推荐
- UVALive 2995 Image Is Everything 策略问题
- uvalive 2326 - Moving Tables(区间覆盖问题)
- 【Uvalive 2531】 The K-League (最大流-类似公平分配问题)
- C - Underwater Snipers UVALive - 5000 最小值最大化问题 二分
- D - Elevators UVALive - 7015 --任意两点间的最短路问题
- UVAlive 2519 Radar Installation (区间选点问题)
- uvalive 2326 - Moving Tables(区间覆盖问题)
- UVALive 5099 Nubulsa Expo 全局最小割问题
- UVALive 6665 Dragonâs Cruller --BFS,类八数码问题
- 格点统计问题(UVALive 3295,UVALive 3720)
- UVALive 3211 2-SAT问题
- UVALIVE 2519 Radar Installation 区间选点问题
- uvalive 3231 Fair Share 公平分配问题 二分+最大流 右边最多流量的结点流量尽量少。
- UVALive 2519 Radar Installation 雷达扫描 区间选点问题
- UVALive 3713 浅谈2-SAT问题图论求解法
- UVA Live 3211飞机调度问题-二分+2-SAT
- [J - Minimal Subarray Length UVALive - 6609] 区间问题
- UVALive-7197 Axles 动态规划 多个背包问题
- uvalive 2519 - Radar Installation(区间选点问题)
- uvalive 2326 - Moving Tables(区间覆盖问题)