zoukankan      html  css  js  c++  java
  • POJ2007 叉积

    题意

    给出一堆点,以(0,0)开始,这堆点能组成一个多凸边型,请把这些点从逆时针方向排序。还是以(0,0)开始输出。

    思路

    数学过关了很简单的题,数学不过关就难受了,叉积是个什么东西嘛???

    向量叉积:a x b = ax * by - ay * bx = |a| * |b| * sin<a, b>,可以判断两个向量间夹角是顺时针还是逆时针,但是在这里这个没用!

    首先题目定了原点(0,0),所以其实点坐标就是向量坐标,我们再定逆时针为规定方向,此时叉积的正负就可以判断a,b的前后顺序,因为:

    • 方向已定(逆时针)
    • 多边形为凸边型,所以所有点与原点连线的夹角不会超过180°,这也是为什么题目可以从一个方向得出一个固定顺序的原因。

    题目要求的就是这个顺序。

    此外如果没有规定第一个点为(0,0),也可以通过任意点减第一个点坐标得到向量后,按上面方法计算。

    注意

    有个坑的地方是:不要把原点(0,0)放入数组进行比较,此时会WA!!!

    代码

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Scanner;
    import java.util.Vector;
    
    /**
     * @Author Yuri
     * @Date 2020/11/27 15:02
     * @Version 1.0
     * @Description:
     */
    
    
    public class Main {
        static class Point implements Comparable<Point> {
            int x, y;
    
            Point(int x, int y){
                this.x = x;
                this.y = y;
            }
    
            @Override
            public int compareTo(Point o) {
                return -(x * o.y - y * o.x);
            }
    
            @Override
            public String toString() {
                return "(" + x + "," + y + ")";
            }
        }
        static Scanner in = new Scanner(System.in);
        static ArrayList<Point> points = new ArrayList<Point>();
    
        public static void main(String[] args) {
            Point point = new Point(in.nextInt(), in.nextInt());
            while (in.hasNext()) {
                points.add(new Point(in.nextInt(), in.nextInt()));
            }
            Collections.sort(points);
            System.out.println("(0,0)");
            for (int i = 0; i < points.size(); i++) {
                System.out.println(points.get(i));
            }
            System.out.println();
        }
    }
    
  • 相关阅读:
    storcli64 查看raid
    初学者路径规划 | 人生苦短我用Python
    Vue.js组件的重要选项
    三个Bootstrap免费字体和图标库
    前端实时消息提示的效果-websocket长轮询
    前端实时消息提示的效果-websocket长轮询
    带分页的标签
    带分页的标签
    VMware-workstation安装
    VMware-workstation安装
  • 原文地址:https://www.cnblogs.com/AkimotoAkira/p/14049139.html
Copyright © 2011-2022 走看看