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

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

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

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

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

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

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

 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 }

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

时间: 2024-10-11 18:42:48

ZJNU 1535 - 新建的大楼--中高级的相关文章

IT基础架构规划方案一(网络系统规划)

背景                   某集团经过多年的经营,公司业务和规模在不断发展,公司管理层和IT部门也认识到通过信息化手段可以更好地支撑公司业务运营.提高企业生产和管理效率.同时随着新建办公大楼.研发大楼和厂房的落成,IT部门也需要对整个集团的信息化和企业IT基础架构进行规划和建设.目前主要分为以下两部分:         楼宇智能化规划和建设方案:主要包括视频监控.门禁系统.语音和数据节点规划和布线.CATV.大屏幕电子显示屏.机房建设等.         企业IT基础架构规划和解决

ZJNU 1262 - 电灯泡——中高级

在影子没有到达墙角前,人越远离电灯,影子越长,所以这一部分无需考虑 所以只需要考虑墙上影子和地上影子同时存在的情况 因为在某一状态存在着最值 所以如果以影子总长与人的位置绘制y-x图像 会呈一个类似y=-x^2函数的图像 所以就可以根据三分法找出最值点 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 double H,h,D; 6 double len(double lh){ 7 return lh+D*(h-lh)/(H-lh);

ZJNU 1310 - 排队——中高级

蒟蒻做法:追踪1号队员,取他回到原来位置需要的次数 1 /* 2 Written By StelaYuri 3 */ 4 #include<stdio.h> 5 int main(){ 6 int T,t,n,ans,x; 7 scanf("%d",&T); 8 for(t=1;t<=T;t++){ 9 scanf("%d",&n); 10 ans=x=1; 11 while(x!=n+1){ 12 if(x>n) 13 x=

ZJNU 1542 - 三角形(续)--中高级

从小到大排序后 先固定一遍,另外两边递增查找 即固定 i,j=i+1,k=j+1 然后让k递增到 a[i]+a[j]<=a[k] 时 此时不能凑成一个三角形 答案增加 k-1-j 组 此时不需要重置 k=j+1 因为 j++ 后 a[j] 会变大 那么在 j~k 之间的所有木棍长度均能再次满足这种 ij 组合 此时只需要把前一个状态的 k 继续往后查找即可 如果 k 查找到了最后,因为i固定,可得 j 不断向后移动,最后能增加的组合有 (n-j)*(n-j-1)/2 组,结束 j 循环,i++

中高级前端大厂面试秘籍,为你保驾护航金三银四,直通大厂(上)

引言 当下,正面临着近几年来的最严重的互联网寒冬,听得最多的一句话便是:相见于江湖~??.缩减HC.裁员不绝于耳,大家都是人心惶惶,年前如此,年后想必肯定又是一场更为惨烈的江湖厮杀.但博主始终相信,寒冬之中,人才更是尤为珍贵.只要有过硬的操作和装备,在逆风局下,同样也能来一波收割翻盘. 博主也是年前经历了一番厮杀,最终拿到多家大厂的 offer.在闭关修炼的过程中,自己整理出了一套面试秘籍供自己反复研究,后来给了多位有需要的兄台,均表示相当靠谱,理应在这寒冬之中回报于社会.于是决定花点精力整理成

oracle数据库(新建数据库)超小白篇

用过Mysql.sqlserver.Oracle 不知道有没有比oracle建库还复杂的 显示:win10系统 1.找到文件夹Oracle-OraDb10g_home1 2.选择Database Configuration Assistant,运行程序 3.选择下一步 ...................................................................................结束..............................

Flask---使用Bootstrap新建第一个demo

Flask---使用Bootstrap新建第一个demo 参考自http://www.jianshu.com/p/417bcbad82fb 还有<Flask web开发> 前端用到Bootstrap开源框架,Bootstrap是客户端框架,后台当然就是Flask了. 服务器需要做的只是提供引用了Bootstrap层叠样式表(CSS)和JS文件的html响应,并且在html.css和js代码中实例化需要的组件,这些操作的最理想的执行环境就是模板 关于模板的介绍及其实现原理:https://kb.

用户编辑新建_AngularJS实现

实现思路:分步骤完成开发,逐渐添加功能:1.实现输出users对象.2.实现点击“编辑”按钮,在表单中显示firstname和lastname,并不可修改.3.实现“新建用户”和“编辑用户”的切换.4.实现“创建新用户”按钮. 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无标题文档</title> 6 <scrip

[Excel]鼠标右键菜单没有新建Word、Excel、PPT怎么办?

很多朋友在安装好Office(2010或2013等)之后,发现右键新建中没有Word.Excel.PowerPoint等项,但是自己的Office却明明安装好了.这个时候该怎么办呢?这里,本文为大家提供一种简单的解决方法. 1.点击开始,找到运行命令行,输入regedit,打开注册表. 2.在左侧找到HKEY_CLASSES_ROOT目录,并展开. 3.首先,我们利用CTRL + F 快捷键,查找“docx”的位置,当然这里也可以自己下拉查找. 4.找到之后,不用展开目录.我们可以看到右侧有一个