博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 270 Lining Up
阅读量:6876 次
发布时间:2019-06-26

本文共 895 字,大约阅读时间需要 2 分钟。

继续复习

暴力

给出n个点的坐标,选出最多的点,在一条直线上

直接暴力,不过时间比较糟糕。一个二重循环,枚举i,j两个点,这两点确定一条直线,然后枚举剩下的点看是否在这条直线上,所以一个三重循环,时间复杂度O(n^3)

注意枚举不要做重复的工作,否则会超时

另外这题是有O(n^2logn)的算法的

#include 
#include
#include
#include
using namespace std;#define N 710#define LEN 110int n;struct point{ int x,y;}p[N];typedef struct point point;int line(int i ,int j ,int k){ return (p[j].y-p[i].y)*(p[k].x-p[i].x) - (p[j].x-p[i].x)*(p[k].y-p[i].y);}void solve(){ int max = 2; for(int i=0; i
max) max = res; } printf("%d\n",max);}int main(){ int T; scanf("%d",&T); getchar(); getchar(); while(T--) { char str[LEN]; n = 0; while(1) { if(!gets(str)) break; if(!strcmp(str,"")) break; sscanf(str,"%d%d",&p[n].x , &p[n].y); n++; } solve(); if(T) printf("\n"); } return 0;}

 

转载地址:http://ljofl.baihongyu.com/

你可能感兴趣的文章