算法题目1——闭合篱笆
来源:互联网 发布:个性淘宝女装店名 编辑:程序博客网 时间:2024/04/29 22:58
题目:
解答思路:
(1) 对于判断篱笆的合法性,就是要判断篱笆是否自交。
我们对于两条不相邻的边作判断,就需要求出两条直线的交点。
但是,两条直线的位置并不能反映这两条边(线段)的位置关系,
所以,不仅要求出这两条边所在的直线的交点,还要求出交点相对
两条边的位置。
如下图,两条边1-2 和3-4的交点为5,设有向线段1-5的有向长度为
线段1-2的d1倍,有向线段3-5的有向长度为线段3-4的d2倍,则通过
d1和d2的不同值,就可以得到两条边的位置关系。这样,两条边相
交则有:0<d1<1; 且 0<d2<1
(2) 要找出所有能看见的边。判断一条边是否能被看见,需要判断该边的
每个部分是否都被其他边所挡住。根据题意,对于每条边,只需考虑
是否有一条边与其他边均不相交的光线找到它上面,即在这条边上有
一点与点(X,Y)所连的线段与其他边不相交。
但是,一条边上有无数个点,要选择哪一个点进行判断呢?对于每一
条边,我们先找出挡在这条边前面的所有端点(包含这条边的两个端
点)如下图:点1为人所占的点,边3-4为所考虑的边,则档在边3-4前
面的端点需要满足:d1>1;0<d2<1。找出这些端点后,光线只能从这些
端点之间穿过去,而且对于两个相邻的端点之间,光线或是都能穿过去
,或是被挡住,所以,只要在每两个相邻端点之间找一条光线进行判断
即可。
具体程序实现(Java):
- 算法题目1——闭合篱笆
- zjuoj1327——篱笆
- 考试题目 篱笆
- 篱笆家装宝典之一——卫浴
- 篱笆家装宝典之三——油漆涂料
- 篱笆家装宝典之四——瓷砖
- 篱笆家装宝典之五——吊顶
- 篱笆家装宝典之六——地板板材
- 篱笆家装宝典之八——五金
- 篱笆家装宝典之九——电工电料
- 篱笆家装宝典之十——床垫
- 篱笆家装宝典之十一——沙发
- 篱笆家装宝典之十二——石材
- 篱笆家装宝典之十三——厨房
- 篱笆家装宝典之十四——家具
- 篱笆家装宝典之十五——软装
- 篱笆家装宝典之十七——验收知识
- 篱笆家装宝典之十八——隐蔽工程
- ORACLE表空间恢复方案
- Circular list example -- Josephus problem
- Oracle:由临时表空间
- 平时留意的一些短句【不断增加中】
- 关于子线程的进度条
- 算法题目1——闭合篱笆
- linux2.6.11启动代码之bootsect.s
- 中文乱码
- ORA-01653: unable to extend table string.string by string in tablespace string
- VB Timer时钟的准确性
- Bash 实例
- 越来越强大的SAFS/STAF/STAX自动化测试框架
- WINFORM播放WAV
- jsp页面打印方法