题目内容:

Description

“不要问我太阳有多高 
我会告诉你我有多真 
不要问我星星有几颗 
我会告诉你很多很多”

一天Qinz和wudired在天上数星星,由于星星可以排列成一条直线,他们比赛看谁能找到一条直线使得这条直线上的星星最多。假设夜空是一个二维平面坐标系,坐标轴为x,y。星星的坐标(x,y)为整数,且同一位置至多有一颗星星。他们需要你的帮助,一条直线最多可以穿过多少颗星星(直线不必平行于坐标轴)?

Input
多组数据,EOF结束。 
  第一行N(0<=N<=1000)为天上星星的数量。 
  接下来N行每行两个数字 X,Y(0<=X,Y<=10^9),表示星星的位置。以空格分开。
Output
输出一行,表示一条直线最多穿过多少颗星星。
Sample Input
3
1 1
2 2
3 3
Sample Output
3
解题思路:
从每个点当作起始点,计算和其他点之间的斜率,如果一点A,到B和C斜率的绝对值相同,那么这三个点在一条线上,以此类推,算出在同一条直线上最多的点数
代码如下:
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <math.h>
 4
 5 #define MAX_NUM 1000
 6
 7 int cmp(const void * a , const void * b)
 8 {
 9     if(*(double *)a > *(double *)b){
10         return 1 ;
11     }
12     return -1 ;
13 }
14
15 double k(int x , int y , int x1 , int y1)
16 {
17     if(x == x1){
18         return 1E10 ;
19     }
20     return (double)(y1 - y) / (x1 - x) ;
21 }
22
23 int cal(int p[][2] , int num)
24 {
25     if(num < 3 ){
26         return num ;
27     }
28     double line[MAX_NUM] ;
29     int res = 0, i , x , y  , j;
30     for(i = 0 ; i < num ; i++){
31         x = p[i][0] ;
32         y = p[i][1] ;
33         for(j = i+1 ; j < num ; j++){
34             line[j] = k(x,y,p[j][0],p[j][1]) ;
35         }
36         qsort(line+i+1,num-i-1,sizeof(double),cmp);
37         int k = 2 ;
38         for(j = i+2 ; j < num ; j++){
39             if(fabs(line[j]-line[j-1]) < 1E-10){
40                 k++ ;
41             }else{
42                 if(k+1>res){
43                     res = k ;
44                 }
45                 k = 2 ;
46             }
47         }
48         if(k>res){
49             res = k ;
50         }
51     }
52     return res ;
53 }
54
55
56 int main()
57 {
58     int point[MAX_NUM][2] ;
59     int i , num;
60     while(scanf("%d",&num)!=EOF){
61         for(i = 0 ; i < num ; i++){
62             scanf("%d%d",&point[i][0],&point[i][1]);
63         }
64         printf("%d\n",cal(point,num));
65     }
66 }

转载于:https://www.cnblogs.com/liucheng/p/3683141.html

题解西电OJ (Problem 1008 - 数星星)相关推荐

  1. 西电上机题——P385-报数游戏

    第二.三次上机 目录 第二.三次上机 前言 一.题目 二.解题 1.思路 2.代码 前言 自己写的上机作业,可以用于参考 目前处于初步学习中,写的不好见谅 一.题目 二.解题 1.思路 n>0& ...

  2. 冯大政计算机应用技术,西电电子所2009考研成绩排名

    女统考应届陕西师范大学 廖桂生信号与信息处7663 信息与计算科 廖桂生信号与信息处7260女统考应届西电电子信息工程 男统考应届西电自动化廖桂生信号与信息处7467男统考应届西电电子信息工程 廖桂生 ...

  3. 西电2020 python OJ作业(50道题目,持续更新)

    西电2020 python OJ作业(50道题,持续更新) 0.A+B problem 题目描述 用来适应环境的题目,自然比较简单些. 计算2个整数的和.这两个整数都在1到1000之间. 输入 输入只 ...

  4. c++ substr截取中间部分字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

  5. c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解

    一.前言 不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP.因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证 ...

  6. URAL 1028 数星星 题解

    URAL 1028 数星星 题解 URAL 1028 题目 Astronomers often examine star maps where stars are represented by poi ...

  7. 西电高数上册期末考试题

    #2021年12月(次年3月考)西电高数上册期末考试题及答案 西电期末考试题由于出题比较新,每年的出题人不同,题目难度逐年提升,加上高数占的学分比较大,非常影响均分.希望大家好好利用资源复习.本资源是 ...

  8. JAVA爬虫练习~通过杭电oj账号查询做题数

    1 首先我们来看一下 效果: 通过查找我们得到 了AC做题数 , 我们爬取HTML代码 , 通过自己的逻辑 筛选 所需要的信息 接下来是代码: package day_1;import java.io ...

  9. 西电《网络空间安全数学基础》 网安数基

    西电网络空间安全数学基础<第一章:线性系统与矩阵乘法> 文章目录 讲在前面 章节脉络 第一章 线性系统与矩阵乘法 概述 一.线性反馈移位寄存器(LFSR)的引入 1.1 移位寄存器: 1. ...

最新文章

  1. Java Swing 探索(一)LayoutManager
  2. 数人云轻量级PaaS将弹性做到极致
  3. Table 自动换行问题
  4. 不吹不擂,一文揭秘鸿蒙操作系统
  5. oracle触发器不允许修改数据库,Oracle数据库使用触发器记录表数据修改记录
  6. mysql 参数bug_MySQL 的这个 BUG,坑了多少人?
  7. 一键了结CUP100%问题
  8. win2008无法用计算机名共享,Windows Server 2008 R2中文件共享
  9. java 二维数据结构_JAVA描述算法和数据结构(01):稀疏数组和二维数组转换
  10. Excel to SQL(2)
  11. jvm 参数_JVM快速调优手册之六:JVM参数设置及分析
  12. 删除数组中指定元素_删除js数组中的指定元素,有这两步就够了
  13. 掌握这些,你也可以轻松扒谱(下)
  14. Effective Kotlin 中文版
  15. 孵出鸡蛋然后拿去卖钱
  16. 流水线效率的计算公式计算机,[转载]生产效率计算公式
  17. Python利用hadoop Streaming编写的Map-Reduce程序命令运行和本地调试运行
  18. Property ‘validationMessageSource‘ threw exception
  19. 《最优化方法及其Matlab程序设计》马昌凤 部分习题答案
  20. 漫天要价,就地还钱!

热门文章

  1. 简单使用JDOM解析XML
  2. Mongodb 基础 查询表达式
  3. hdu 6396 Swordsman (技巧)
  4. 通过trace跟踪系统调用
  5. Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
  6. 程序员/设计师能用上的 75 份速查表
  7. step1 . day5 C语言基础练习之日历(使用函数调用,优化至元年开始时间)
  8. Vue (二) --- Vue对象提供的属性功能
  9. golang调试工具Delve
  10. 【java学习笔记】浅析JavaWeb开发中Model1模式和Model2模式