博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算机辅助设计(湖南省首届“湘邮科技杯”大学生程序设计大赛试题)
阅读量:6229 次
发布时间:2019-06-21

本文共 1890 字,大约阅读时间需要 6 分钟。

计算机辅助设计

时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte

描述

 

在计算机辅助设计(CAD)中,有一个经典问题:消除隐藏线(被其它图形遮住的线段) 。你需要设计一个软件,帮助建筑师绘制城市的侧视轮廓图。为了方便处理,限定所有的建筑物都是矩形的,而且全部建立在同一水平面上。每个建筑物用一个三元组表示(Li, Hi, Ri)其中 Li 和 Ri 分别是建筑物 i 的左右边缘坐标,Hi 是建筑物 i 的高度。

 
 
    下面左图中的建筑物分别用如下三元组表示:
    (1,11,5),(2,6,7),(3,13,9),(12,7,16),(14,3,25),(19,18,22),(23,13,29),(24,4,28)
 
    下面右图中的城市侧视轮廓线用如下的序列表示:
    (1,11,3,13,9,0,12,7,16,3,19,18,22,3,23,13,29,0)

 

输入

 

输入的第一行为一个整数N,表示建筑物的数目,接下来的N行的输入中包含一系列的建筑物三元组。建筑物的坐标都是正整数且不大于 1000。建筑物的数目不会超过 50。每行只有一个三元组。三元组的每个元素之间用一个空格分开。

 

输出

 

输出中包含一行描述轮廓线的数值序列,其中偶元素代表轮廓线的延伸高度,奇元素代表轮廓线顶点的水平坐标,如上面的图例所示。

 

样例输入

8
1 11 5
2 6 7
3 13 9
12 7 16
14 3 25
19 18 22
23 13 29
24 4 28

 

样例输出

1 11 3 13 9 0 12 7 16 3 19 18 22 3 23 13 29 0
 
题解一:刚开始把问题想得特复杂,不断的拿两个区间比,重叠部分不好判断,最后在CDD同学的帮助下想到可以根据高度来更新点。
     先把每段区间[x,h,y]的高度赋为h,如果右面的区间[x1,h1,y1]中,x1>x&&y1<y,取重叠部分[x1,y]的最大高度
max = h>h1?h:h1.
     具体过程可看代码......
 
 
#include
#include
#include
#include
#include
using namespace std;struct Node{ int x,h,y;};Node p[52];int main(){ int n,i,j,Max; int high[1010]; while(~scanf("%d",&n)) { memset(high,0,sizeof(high)); Max=0; for(i=0;i

题解二:两层循环枚举

#include
#include
#include
#include
#include
#include
using namespace std;struct node{ int x; int y; int h;}p[1010];int main(){ int n,i,j,k; int a,b,pp,qq; vector
q; while(~scanf("%d",&n)) { b = 0,a = 0xfffffff; for(i=0;i
b) b = p[i].y; } qq = 0; for(i=a;i<=b;i++) { pp = 0; for(j=0;j
=p[j].x && i
pp) pp = p[j].h; } } if(pp!=qq) { node v; v.x = i; v.y = pp; q.push_back(v); qq = pp; } } for(i=0;i

 

转载于:https://www.cnblogs.com/lavender913/p/3332059.html

你可能感兴趣的文章
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
Python3.4 12306 2015年3月验证码识别
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
Io流的概述
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>