码迷,mamicode.com
首页 > 其他好文 > 详细

ZJNU 1535 - 新建的大楼--中高级

时间:2020-01-27 09:32:15      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:计算   char   span   get   code   方式   node   uri   color   

因为从俯视图看,输入输出的视角是从右下方看向左上方的

所以左上角的正方体最有可能被其他正方体挡住

立体上,底部的正方体最有可能被顶部的正方体挡住

所以绘图应该从后往前,从下往上绘制

剩下的就是一大堆计算和判断了

采用的是先绘制出规范的图再与输入的图做对比的方式

 1 /*
 2 Written By StelaYuri
 3 */
 4 #include<stdio.h>
 5 #include<string.h>
 6 int n,m,ar[21][21];
 7 char ori[200][200],bd[200][200],node[6][8]={
 8     "..+---+",
 9     "./   /|",
10     "+---+ |",
11     "|   | +",
12     "|   |/.",
13     "+---+.."
14 };
15 void dr(int x,int y){
16     int i,j;
17     for(i=0;i<6;i++)
18         for(j=0;j<7;j++)
19             if(node[i][j]!=.)
20                 bd[x+i][y+j]=node[i][j];
21 }
22 int main(){
23     int i,j,h=-1,w,x,y;
24     scanf("%d%d",&n,&m);
25     for(i=0;i<n;i++)
26         for(j=0;j<m;j++)
27             scanf("%d",&ar[i][j]);
28     getchar();
29     while(gets(ori[++h]));
30     w=strlen(ori[0]);
31     for(i=0;i<h;i++)
32         memset(bd[i],.,w);
33     for(i=0;i<n;i++)
34         for(j=0;j<m;j++){
35             x=h-(4+2*n)+2*i;
36             y=(n-1)*2+4*j-2*i;
37             while(ar[i][j]--){
38                 dr(x,y);
39                 x-=3;
40             }
41         }
42     for(i=0;i<h;i++)
43         for(j=0;j<w;j++)
44             if(bd[i][j]!=ori[i][j]){
45                 puts("NO");
46                 return 0;
47             }
48     puts("YES");
49     
50     return 0;
51 }

 

ZJNU 1535 - 新建的大楼--中高级

标签:计算   char   span   get   code   方式   node   uri   color   

原文地址:https://www.cnblogs.com/stelayuri/p/12235327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!