POJ 1654 Area
来源:互联网 发布:淘宝卖什么销量最好 编辑:程序博客网 时间:2024/06/03 02:26
这是一道非常好的计算多边形面积的题目,首先多边形不确定凹凸,其次多边形的点很多,所以这道题就不能用我们平常的想法去根据点计算多边形的面积。通过观察可以发现这道题有一个比较好的地方,那就是多边形的边已经按次序给出,并且保证没有任何相邻的两点和别的边构成相交的情况,而且最终一定会走回原点构成多边形,所以可以根据叉积的性质去求。
|a×b|=|a|*|b|*sinθ,将叉积除以2正好就是三角形的面积,由于题目中答案一定是0.5的整数倍,所以可以先算两倍的面积最后在进行判断,下面是自己写的代码和注释:
#include<stdio.h>#include<string.h>#define LL long longchar step[1000005];struct Point{//点的定义一定要用long long,我在上面WA过一次LL x,y;};int dir_x[10]={0,-1,0,1,-1,0,1,-1,0,1};//x方向int dir_y[10]={0,-1,-1,-1,0,0,0,1,1,1};//y方向int mult(Point a,Point b)//a与b的叉积{return (a.x*b.y-a.y*b.x);}int main(){LL area;//面积也要用LLint t,i;scanf("%d",&t);while(t--){area=0;Point start,end;start.x=start.y=0;scanf("%s",step);for(i=0;i<strlen(step);i++){end.x=start.x+dir_x[step[i]-'0'],end.y=start.y+dir_y[step[i]-'0'];area+=mult(end,start);start=end;}if(area<0)area=-area;if(area%2)printf("%lld.5\n",area/2);elseprintf("%lld\n",area/2);}return 0;}
- poj 1654 Area
- POJ 1654 Area
- POJ 1654 Area
- poj 1654 Area
- POJ 1654 Area
- poj 1654Area
- poj 1654 Area
- POJ 1654 Area
- POJ 1654 Area
- poj 1654 Area
- poj 1654 Area
- POJ 1654 Area
- POJ 1654 Area
- POJ 1654 Area
- poj 1654 Area
- POJ 题目1654Area
- poj 1654 Area
- poj 1654 Area
- JSP脚本和JSTL的交互
- 程序员求职之道(《程序员面试笔试宝典》)之程序设计基础(static的使用)?
- Tomcat无法访问问题
- 人脸区域定位
- 高效能人士的七个习惯之一由内而外的全面造就自己读后感
- POJ 1654 Area
- 注册Jdbc驱动程序的三种方式
- 关于蓝牙聊天室的设计与实现
- 网上下载图片并保持到SD卡中+读取SD卡中的图片
- UNIX文件属性(1)
- Java中的移位
- 爱立信实验室实习感想(一)
- JSON
- linux信号处理函数的可重入性