求同一条直线所能通过的最多点数

dyh333 2009-11-17 11:49:58
已知平面上n(n<=10)个点的直角坐标,编程求同一条直线所能通过的最多点数
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyh333 2009-11-22
  • 打赏
  • 举报
回复
高手指教
dyh333 2009-11-20
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#define M 20
int main(int argc, char *argv[])
{
int r[M][2],max=0,count,m,i,j,p;
float k;
printf("输入点个数m:"); scanf("%d",&m);
for(i=1;i<=m;i++)
{printf("第%d个点的坐标:",i);
scanf("%d,%d",&r[i][0],&r[i][1]);
}
for(i=1;i<m;i++)
for(j=i+1;j<=m;j++)
{count=2;
k=(r[i][1]-r[j][1])/(r[i][0]-r[j][0]);
if(j<m)
{for(p=j+1;p<=m;p++)
{if((r[p][1]-r[i][1])/(r[p][0]-r[i][0])==k) count++;}
}
if(count>max) max=count;
}
printf("%d",max);
system("PAUSE");
return 0;
}
这算法可以吗 好像不是很好
berryluo 2009-11-18
  • 打赏
  • 举报
回复
才10个点枚举就可以了,定了某两个点,看其它点是不是会在这两人点确定的直线上;
如果是N(N>=10000)个点,那么就可以考虑其它的算法了,这样的算法也是有的
macrojj 2009-11-18
  • 打赏
  • 举报
回复
你也可以先暴力求斜率,把斜率相同的再计算完整的直线。这样会稍稍减少复杂度。
mstlq 2009-11-17
  • 打赏
  • 举报
回复
两点决定一条直线,总共可能的直线不过100条……
暴力穷举就行了……

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧