现在的位置: 首页 > 综合 > 正文

POJ1118

2019年09月12日 ⁄ 综合 ⁄ 共 529字 ⁄ 字号 评论关闭

从给定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;
}

 

【上篇】
【下篇】

抱歉!评论已关闭.