zoukankan      html  css  js  c++  java
  • 简单多边形

    链接:https://www.nowcoder.com/acm/contest/110/B
    来源:牛客网

    为了让所有选手都感到开心,Nowcoder练习赛总会包含一些非常基本的问题。 比如说:
    按顺时针或逆时针方向给你一个简单的多边形的顶点坐标,请回答此多边形是顺时针还是逆时针。

    输入描述:

    输入包含N + 1行。
    第一行包含一个整数N,表示简单多边形的顶点数。
    在下面的N行中,第i行包含两个整数xi,yi,表示简单多边形中的第i个顶点的坐标。
    

    输出描述:

    如果简单多边形按顺时针顺序给出,则在一行中输出“clockwise”(不带引号)。 否则,打印"counterclockwise''(不带引号)。
    示例1

    输入

    3
    0 0
    1 0
    0 1

    输出

    counterclockwise
    示例2

    输入

    3
    0 0
    0 1
    1 0

    输出

    clockwise

    备注:

    3≤N≤30
    -1000≤xi,yi≤1000
    数据保证,这个简单多边形的面积不为零。
    简单多边形的判断,对于凸多边形而言,只需对某一个点计算
    (x[i] - x[a]) * (y[b] - y[i]) - (y[i] - y[a]) * (x[b] - x[i])

    如果上式的值为正,逆时针;为负则是顺时针

    而对于凹多边形,则需对于多边形的每一个点计算上述值,如果正值比较多,是逆时针;负值较多则为顺时针。


    #include<stdio.h>
    #define N 120
    int main()
    {
        int ans,n,x[N],y[N],i,h,d,a,b;
        while(scanf("%d",&n)!=EOF)
        {
            h=0;d=0;
            for(i=0;i<n;i++)
                scanf("%d%d",&x[i],&y[i]);
            for(i=0;i<n;i++)
            {
                if(i==0)
                {
                    a=n-1;
                    b=i+1;
                }
                else if(i==n-1)
                {
                    a=i-1;
                    b=0;
                }
                else {
                    a=i-1;
                    b=i+1;
                }
                ans = (x[i] - x[a]) * (y[b] - y[i]) - (y[i] - y[a]) * (x[b] - x[i]);
                if(ans>0)
                    h++;
                else
                    d++;
            }
            if(h<d)
                printf("clockwise
    ");
            else
                printf("counterclockwise
    ");
        }
        return 0;
    }


  • 相关阅读:
    linux C gcc -lm
    ubuntu 工作区中拖动一个窗体到另一个工作区就卡住回不到桌面了
    ArrayList调用remove方法需要注意的地方
    关于Java中File的renameTo函数
    Java管道流
    NPOI Excel 单元格背景颜色对照表
    Java 简单图片截取
    maven pom.xml 配置 cxf-codegen-plugin 生成web服务客户类型
    ZeroClipboard 简单应用
    PromiseJs
  • 原文地址:https://www.cnblogs.com/zyq1758043090/p/10003042.html
Copyright © 2011-2022 走看看