给你n个点,两点之间可以连一条直线,求直线不能有平行的,求有几条这样的直线
先将每两个点的斜率求出来,排序,,最后求不同的斜率数,水题,注意斜率不存在的情况
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define max 0x3f3f3f3f
int cmp(double a,double b)
{
return a<b;
}
int main()
{
int j,n,i;
double x[201],y[201];
double k[20001];
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%lf%lf",&x[i],&y[i]);
int m=0;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
if(x[i]==x[j]) /// 斜率不存在时 ,要注意
k[++m]=max;
else k[++m]=(y[i]-y[j])/(x[i]-x[j]);
}
sort(k+1,k+1+m,cmp);
// for(i=1;i<=m;i++)
// cout<<k[i]<<"_+";
// cout<<endl;
int ans=1;
for(i=2;i<=m;i++)
if(k[i]!=k[i-1]) 求不同斜率的直线数
ans++;
printf("%d\n",ans);
return 0;
}