POJ1118

来源:互联网 发布:阿里云服务器公网ip 编辑:程序博客网 时间:2024/05/21 17:46

从给定case中找出一条直线使上面的点数最多

很久以前的代码了

#include "stdio.h"int pt[701][2];int main(void){unsigned Pnum;unsigned NumOfLine;int Fx,Fy,left;while(((scanf("%d",&Pnum)) ==1) && Pnum){unsigned N = 0;for( size_t ix = 0 ; ix != Pnum ; ix ++ ){scanf("%d %d",pt[ix] + 0,pt[ix] + 1);}for( size_t ix = 0 ; ix != Pnum - 1 ; ix ++ ){for( size_t id = ix + 1 ; id != Pnum ; id ++ ){NumOfLine = 0;Fx = (pt[ix][0] - pt[id][0]);Fy = (pt[ix][1] - pt[id][1]);    left = Fx*pt[id][1] - Fy*pt[id][0];for( size_t i = id + 1 ; i != Pnum ; i ++ ){if( left == (Fx*pt[i][1] - Fy*pt[i][0]) ){NumOfLine ++;}}N = N < NumOfLine ? NumOfLine : N; }}printf("%d\n",N + 2);}return 0;}


 

原创粉丝点击