C语言面试题

来源:百度知道 编辑:UC知道 时间:2024/06/27 05:27:53
C语言面试题4(Trilogy(2006校园招聘)

//这个题比较常规,原题是应用题,说白了就是:

在二维空间里给你若干个点的集合,每个点都是由整型的x坐标和整型的y坐标表示的。求
点集里最多几个点共线。
struct Point{
int x;
int y;
}
*******************************************************************
int Pilot(Point p[],int n)
{
//.....code

}

任意取两个点,计算连线y=ax+b中的a和b.计算出来之后,把其他点的坐标代入这条线的公式里计算是否在这条直线上。统计在这条线上的点的个数。这是一种其中的一种方案。
遍历这个集合中的所有的可能,应该有Cn2种方案。然后其中点数最多的方案找出来就可以了。
算法笨了一点,但应该管用。

关键步骤是
if((p[i].y/p[0].y==p[i].x/p[0].x)&&(p[i].x%p[0].x==p[i].y%p[0].y))
n++;

直线,斜线,竖线。

大循环找到X相同最多的个数,和Y相同的个数,如果超过一般就不用管斜线。否则比较X,Y的比例相同的点

楼上的没你那么简单
一个比较麻烦的问题,占楼等答案