美文网首页
二叉查找

二叉查找

作者: 意浅离殇 | 来源:发表于2017-10-15 21:48 被阅读0次

多边形重心问题 java

看题目 点这里
题目描述:
描述
在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段的连接后的图形;
如果是一条线段,我们定义面积为0,重心坐标为(0,0).现在求给出的点集组成的图形的面积和重心横纵坐标的和;

输入
第一行有一个整数0<n<11,表示有n组数据;
每组数据第一行有一个整数m<10000,表示有这个多边形有m个顶点;
输出
输出每个多边形的面积、重心横纵坐标的和,小数点后保留三位;
样例输入

3
3
0 1
0 2
0 3
3
1 1
0 0
0 1
4
1 1
0 0
0 0.5
0 1

样例输出

0.000 0.000
0.500 1.000
0.500 1.000

本题的解题思路:
1.多边形面积怎么求。

将多边形分割成多个三角形即可对三角形面积求和

2.三角形面积用叉积怎么求 。

x2*y1-x1y2 详细描述 点这里 当然大家也可以自己去谷歌
3 求重心坐标关系。

把多边形的每个三角形看作一个质量为面积的点,然后将每个点的横坐标和这个三角形的面积相乘后结果相加。最终结果除以多边形面积就是多边形重心的X坐标。Y同理求得。

具体代码如下:



import java.util.Scanner;

public class Main {
    public static void main(String args[]){
        int n=0;
        Scanner s=new Scanner(System.in);
        n=s.nextInt();
        for(int i=0;i<n;i++){
            int n1=s.nextInt();
            double data[][]=new double[n1][2];
            double sc=0;
            double sx=0;
            double sy=0;
            for(int j=0;j<n1;j++){
                data[j][0]=s.nextDouble();
                data[j][1]=s.nextDouble();
            }           
             for (int j = 1; j <= n1; j++) {  
                    double temp=(data[j % n1][0]*data[j-1][1]-data[j % n1][1]*data[j -1][0])/2.0;  
                    sc=sc+temp;
                    sx=sx+temp*(data[j % n1][0]+data[j-1][0])/3;
                    sy=sy+temp*(data[j % n1][1]+data[j-1][1])/3;
                }  
        
          //result取绝对值  
             if (sc - 0 < 0.0000001) {  
                    System.out.println("0.000 0.000");  
                    continue;  
                }  
                    System.out.print(String.format("%.3f %.3f\n",sc,(sx + sy)/sc));  
                
        }
        
    }
}

相关文章

  • 极客时间数据结构与算法之美笔记25~26

    二叉树到二叉查找树,是为了查找数据的效率接近logN。 二叉查找树到平衡二叉查找树,是为了防止二叉查找树沦为链表。...

  • 二叉查找树

    1)二叉查找树是什么?2)二叉查找树的插入、删除、查找?3)Go代码实现 一、二叉查找树是什么?二叉查找树(BST...

  • 11-二叉查找树

    二叉查找树 1.什么是二叉查找树? 二叉查找树是一种支持数据动态的插入,删除,查找的数据结构。 2.二叉查找树的设...

  • 红黑树

    红黑树的本质就是一棵二叉查找树,所以先从二叉查找树来了解起。 二叉查找树 二叉查找树又称有序二叉树,具有以下特性:...

  • 二叉查找树

    二叉查找树,又称二叉搜索树 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: ...

  • 二叉树 堆 2019-04-17

    二叉树 实现一个二叉查找树,并且支持插入、删除、查找操作 实现查找二叉查找树中某个节点的后继、前驱节点 实现二叉树...

  • 《数据结构与算法》知识点(四)

    第七章 查找 顺序查找、折半查找、索引查找、分块查找是静态查找,动态查找有二叉排序树查找,最优二叉树查找,键树查找...

  • 99-数据结构和算法

    难点:二叉树的遍历 红黑树 图的遍历 二叉查找树二叉查找树(binary search tree),二叉查找树在二...

  • 浅谈AVL树,红黑树,B树,B+树原理及应用

    二叉查找树 简介 二叉查找树也称为有序二叉查找树,满足二叉查找树的一般性质,是指一棵空树具有如下性质: 任意节点左...

  • 教你透彻了解红黑树(转)

    原文链接 二叉查找树 由于红黑树本质上就是一棵二叉查找树,所以在了解红黑树之前,咱们先来看下二叉查找树。 二叉查找...

网友评论

      本文标题:二叉查找

      本文链接:https://www.haomeiwen.com/subject/oqhhuxtx.html