• 51NOD斜率最大平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。


     1 package com.lionel.test;
     2 import java.util.ArrayList;
     3 import java.util.Arrays;
     4 import java.util.Collection;
     5 import java.util.Comparator;
     6 import java.util.HashMap;
     7 import java.util.Iterator;
     8 import java.util.List;
     9 import java.util.Map;
    10 import java.util.Scanner;
    11 import java.util.Set;
    12 import java.util.TreeSet;
    13 /**
    14  * 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线所通过的两个点。
    15  *(点的编号为1-N,如果有多条直线斜率相等,则输出所有结果,按照点的X轴坐标排序,正序输出。
    16  *    数据中所有点的X轴坐标均不相等)
    17  * 
    18  * */
    19 public class Temp5 {
    20     public static void main(String[] args) {
    21         Scanner in=new Scanner(System.in);
    22         String  str=in.nextLine();
    23         int len=Integer.parseInt(str);
    24         Integer []xArr=new Integer[len];
    25         Integer []yArr=new Integer[len];
    26         Map<Integer,Integer>map2=new HashMap<Integer, Integer>();
    27         for (int i = 0; i < len; i++) {
    28             String [] s=in.nextLine().split(" ");
    29             xArr[i]=Integer.parseInt(s[0]);
    30             map2.put(Integer.parseInt(s[0]), i);
    31             yArr[i]=Integer.parseInt(s[1]);
    32         }
    33        /* TreeSet<Double>set=new TreeSet<>(new Comparator<Double >() {
    34             @Override
    35             public int compare(Double d, Double d2) {
    36                 // TODO Auto-generated method stub
    37                 if (d2>d) {
    38                     return 1;
    39                 }else{
    40                     return -1;
    41                 }
    42             }
    43         });*/
    44         double max=0;
    45         Map<Double,Collection<Integer>>map=new HashMap<Double, Collection<Integer>>();
    46         for (int i = 0; i < len-1; i++) {
    47             for (int j = i+1; j < len; j++) {
    48                 if (xArr[i]<xArr[j]) {
    49                     Integer temp=xArr[j];
    50                     xArr[j]=xArr[i];
    51                     xArr[i]=temp;
    52                     temp=yArr[j];
    53                     yArr[j]=yArr[i];
    54                     yArr[i]=temp;
    55                 }
    56             }
    57         }
    58         List<Integer>list3=new ArrayList<Integer>();
    59         for (int i = 0; i < len-1; i++) {
    60             for (int j = i+1; j < len; j++) {
    61                 if (xArr[i]>xArr[j]) {
    62                     
    63                     double res=(yArr[i]-yArr[j])/((xArr[i]-xArr[j])*1.0);
    64                     if (res>max) {
    65                         list3.clear();
    66                         list3.add(xArr[j]);
    67                         list3.add(xArr[i]);
    68                         max=res;
    69                     }else if(res==max){
    70                         list3.add(xArr[j]);
    71                         list3.add(xArr[i]);
    72                     }
    73                 }
    74             }
    75         }
    76         len=list3.size();
    77         for (int i = 0; i < len; i++) {//2
    78             Integer te=list3.get(i);
    79             for (int j = i+1; j < len; j++) {
    80                 if (te>list3.get(j)) {
    81                     te=list3.get(j);
    82                 }
    83             }
    84             if (i==0||i%2==1) {
    85                 System.out.print((map2.get(te)+1)+" ");
    86             }else{
    87                 System.out.print((map2.get(te)+1));
    88                 System.out.println();
    89             }
    90         }
    91             
    92         }
    93 }
  • 相关阅读:
    css点滴3—5种方式实现圆环
    css点滴2—六种方式实现元素水平居中
    css点滴1—八种方式实现元素垂直居中
    当我们在讨论CQRS时,我们在讨论些神马?
    CSDN屏蔽广告
    手撸一套纯粹的CQRS实现
    【转】CAP 定理的含义
    【转】浅谈命令查询职责分离(CQRS)模式
    Castle DynamicProxy基本用法(AOP)
    【转】面向对象设计的SOLID原则
  • 原文地址:https://www.cnblogs.com/lionels/p/7007980.html
Copyright © 2020-2023  润新知