设平面在加入某不重合于已有线后与原已有线交点数为 x,则该平面会增加x+1个部分。
#include<bits/stdc++.h>
#include<set>
#define x first
#define y second
using namespace std;
set<pair<double,double> > a,b;//a存不重复的线,b存不重复的交点
int n,ans=2,fl,m=0;
double x1,x2,y1,y2,xx,yy,xxx;
pair<double,double> c[1010];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i=0;i<n;i++)
{
cin>>x1>>y1;
a.insert({x1,y1});
}
n=a.size();
for(auto i=a.begin();i!=a.end();i++){//要重点掌握set内容的导出
xx=i->first,yy=i->second;//set里套pair,用first和second时必须用->,不能用点
c[m++]={xx,yy};
}
for(int i=1;i<n;i++)
{
for(int j=0;j<i;j++)
{
if(c[i].x==c[j].x)
{
continue;
}
x2=(c[j].y-c[i].y)/(c[i].x-c[j].x);
y2=x2*c[i].x+c[i].y;
fl=b.size();
b.insert({x2,y2});
}
ans++;
ans+=b.size();
b.clear();//每次换新线 ,要把交点清零,重新计算新的交点
}
cout<<ans;
}