码迷,mamicode.com
首页 > 其他好文 > 详细

Area - POJ 1654(求多边形面积)

时间:2015-10-27 09:52:35      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:

题目大意:从原点开始,1-4分别代表,向右下走,向右走,向右上走,向下走,5代表回到原点,6-9代表,向上走,向左下走,向左走,向左上走。求出最后的多边形面积。

分析:这个多边形面积很明显是不规则的,可以使用向量积直接求出来面积即可。

代码如下:

-----------------------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
#include<string.h>

const int MAXN = 1e6+7;

 ///1-4分别代表,向右下走,向右走,向右上走,向下走,5代表回到原点,6-9代表,向上走,向左下走,向左走,向左上走。
int dir[10][2] = { {},{1,-1},{1,0},{1,1},{0,-1},{0,0},{0,1},{-1,-1},{-1,0},{-1,1} };
char s[MAXN];
int main()
{
    int T;

    scanf("%d", &T);

    while(T--)
    {
        scanf("%s", s);
        long long ans=0, x=0, y=0, nx, ny;

        for(int i=0; s[i]; i++)
        {
            nx = x+dir[ s[i]-0 ][0];
            ny = y+dir[ s[i]-0 ][1];

            ans += (x*ny - y*nx);
            x=nx, y=ny;
        }

        if(ans < 0)ans *= -1;

        if(ans % 2 == 0)
            printf("%lld\n", ans/2);
        else
            printf("%lld.5\n", ans/2);
    }

    return 0;
}

 

Area - POJ 1654(求多边形面积)

标签:

原文地址:http://www.cnblogs.com/liuxin13/p/4913247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!