这个程序怎么编写阿,请高手指点,急,在线等……?
已知平面上(直角坐标系)的N个点,请编写一个程序,求同一条直线所能通过的最多点数。
#include "stdio.h" #define N 11 struct DJ { float x; float y; }; int main() { int maxnum=0; struct DJ all[N]; //初始化 for(int i=0;i!=N;++i) if(scanf("%f%f",&all[i].x,&all[i].y)==EOF) break; //start for(int i=0,k;i!=N;++i) { int temp[N] = {0}; float value[N] = {0}; for(int j=i+1;j!=N;++j) { value[j]=(all[i].y - all[j].y)/(all[i].x - all[j].x); //寻找是否有一样的斜率 for(k=i+1;k!=j;++k) if(value[k]==value[j]) break; //记录斜率相同点数 temp[k]++; } for(int i=0;i!=N;++i) if(maxnum<temp[i]) maxnum=temp[i]; } printf("%d",maxnum+1); return 0; }看了看 用斜率做非常限制斜率的要求,应为斜率可能相当大,也可能为零,可以考虑用其它方法做