多边形面积[nyoj 1011,hdu 2036]
来源:互联网 发布:sql的链接服务器 编辑:程序博客网 时间:2024/05/16 06:13
nyoj 1101 So Easy[II]: click here
hdu 2036 改革春风吹满地:click here
求多边形的面积的方法:
就是利用叉积的几何意义:以两向量为邻边的平行四边形的有向面积。
nyoj 这道题是按顺时针给出的点。而hdu上的按逆时针的顺序给出的。 最后有一个绝对值判断,使得求出的面积都是正的。
代码:
#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int N = 1e2 + 4;struct Point{ double x, y;}p[N];struct Vector{ double x, y;};double operator *(Vector a, Vector b){ return a.x * b.y - b.x * a.y;}int n;double f(){ double sum = 0; Vector a, b; for(int i = 1; i < n - 1; i ++){ a.x = p[i].x - p[0].x; a.y = p[i].y - p[0].y; b.x = p[i + 1].x - p[0].x; b.y = p[i + 1].y - p[0].y; sum += (a * b) * 0.5; } return sum;}int main(){ while(~scanf("%d",&n)){ for(int i = 0; i < n; i ++){ scanf("%lf %lf", &p[i].x, &p[i].y); } double ans = f(); printf("%.2lf\n", fabs(ans)); } return 0;}另二种解法: #include <stdio.h>#include <stdlib.h>#include <math.h>const int MAXN = 100 + 10;struct Point{ double x,y;}p[MAXN];int N;int main(){ while(~scanf("%d",&N)) { int j; double area = 0; for(int i = 0;i < N;++i) scanf("%lf%lf",&p[i].x,&p[i].y); for(int i = 0;i < N;++i){ j = (i+1)%N; area += p[i].x*p[j].y; area -= p[i].y*p[j].x; } area /= 2.0; printf("%.2lf\n",area > 0?area:-area); } return 0;}
#include<stdio.h>typedef struct point{int x;int y;}Point;Point p[101];int main(){int n,i;while(scanf("%d",&n)&&n){double area=0;for(i=0;i<n;i++)scanf("%d%d",&p[i].x,&p[i].y);for(i=0;i<n-1;i++)area=area+0.5*(p[i].x*p[i+1].y-p[i+1].x*p[i].y);area=area+0.5*(p[n-1].x*p[0].y-p[0].x*p[n-1].y);printf("%0.1lf\n",area);}return 0;}
0 0
- 多边形面积[nyoj 1011,hdu 2036]
- 多边形面积[nyoj 1011,hdu 2036]
- hdu 2036多边形面积
- HDU 2036 求多边形面积
- HDU 2036 计算多边形面积
- HDU 2036 多边形的面积
- hdu 2036(多边形面积)
- HDU-2036 多边形的面积
- HDU 2036 求多边形面积
- HDU(2036) 求多边形面积
- HDU-2036-JAVA-多边形面积
- hdu 2036 计算多边形面积
- hdu 2036 求多边形面积
- HDU 2036 (平面几何 多边形面积)
- hdu 2036 (多边形面积)
- hdu 2036 (求多边形面积)
- hdu 2036 求多边形面积问题
- (转)hdu 2036(多边形面积)
- 第十一周项目一 程序填充题
- 【Leetcode】Minimum Depth of Binary Tree (Tree Judge)
- 第十一周项目6-回文、素数(输出1000以内所有回文素数)
- MyEclipse中修改jsp页面编码
- GC的一些小点
- 多边形面积[nyoj 1011,hdu 2036]
- poj 3463 Sightseeing 最短路径数量
- android开发新手开发环境建立遇到的那些事
- 第十一周项目六 (1+)输出1000内所有素数
- Java基础笔记-第十五记
- Android.mk高级写法
- 高手速成android开源项目【View篇】
- HHVM安装使用教程
- 第十一周项目6-回文、素数(输出10000以内的可逆素数)