- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HDU 2108:Shape of HDUxiangzi of NanKai University先回顾一下这道题~~~我们用依次按逆时针方向输入顶点坐标来表示一个多边形,现在请你编程判断这个图形是凸多边形还是凹多边形?输入:包含多组测试数据,首先是一行整数表示多边形点的数量,然后逆时针顺序依次输入点的横、纵坐标。输出:若为凸多边形输出convex,否则输出concave来对题目分析一下~~~p0p7p1p6向量叉积:α×β = x1×y2 – x2×y1可以从而得知如果是凸多边形必然对任意n和i, pn-1pn×pn-1pn+i=0,如果是凹多边形,必然会出现0乘积。(右手定则判断差积方向~~)p2p5p3p4p0p5p1p2p4p3想想解题思路~~~p0p7p1p6思路一:对任意一条边pn-1pn使之与除这条边以外的pn-1pi相乘,如果发现乘积异号,说明是凹多边形,否则是凸多边形。思路二:对点集(p0,p1,p2......pn-1,pn)判断点pn-3 和pn是否在pn-1pn-2连线的两边。如果对所有点pn都满足pn-3 和pn在pn-1pn-2同侧,则为凸多边形。 使用差乘判断两点否在一边。(相较以第一种方法可以减少运算)p2p5p3p4p0p5p1p2p4p3思路一的代码实现#includestdio.hint main(){ int x[1000],y[1000],n,x1,y1,t; while(scanf(%d,n) n){ int i=0,j; bool isconvex=true; for(i=0;in;i++){ scanf(%d%d,x[i],y[i]); } for(i=0;in isconvex;i++){ if(i==n-1){ x1=x[0]-x[i]; y1=y[0]-y[i]; } else { x1=x[i+1]-x[i]; y1=y[i+1]-y[i]; } for(j=0;jn-1;j++){ t=(x[j]-x[i])*y1-(y[j]-y[i])*x1; if(t0){isconvex=false;break;} } } if(isconvex)printf(convex\n); else printf(concave\n);} return 0;}思路二的代码实现: (可以对代码优化以减少篇幅,此处为了易读没有做简化)#includestdio.hint main(){int n,i,j,x1,y1,x2,y2,x3,y3;int px[100],py[100];while(scanf(%d,n) n){ bool isconvex=true; for(i=0;in;i++){scanf(%d%d,px[i],py[i]); if(i2 isconvex) { x1=px[i-3]-px[i-2]; y1=py[i-3]-py[i-2];x2=px[i-1]-px[i-2]; y2=py[i-1]-py[i-2];x3=px[i]-px[i-2]; y3=py[i]-py[i-2];if((x1*y2-x2*y1)0 ||(x3*y2x2*y3)0)isconvex=false; } if(i==n-1){x1=px[i-1]-px[i]; y1=py[i-1]-py[i];x2=px[0]-px[i]; y2=py[0]-py[i];x3=px[1]-px[0]; y3=py[1]-py[0];if((x1*y2-x2*y1)0 ||(x3*y2-x2*y3)0)isconvex=false;} } if(isconvex)printf(convex\n); else printf(concave\n); } return 0;}谢谢观赏~~~~南开大学软件学院 07届 祥子
您可能关注的文档
- b新第二季23套室内设计展示.pptx
- 单元25板构造详图悬挑.pptx
- 牡丹江市讯通通讯器材有限公司.pptx
- 质量记录表格汇编.pdf
- 10011车辆运输辅助和存储1新车存放.pdf
- 文稿彩超参数的调节.pptx
- 十佳志愿服务集体.pdf
- 设变数据cn0918说明对比side rail.pptx
- 课件成果维修手册.pdf
- 讲义文稿案例第一章.pptx
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
文档评论(0)