2021.10.28 记录 暴力法题目 最佳射击
int n,m;
cin>>n;
int x[55],y[55];
for(int i =0;i<n;i++){
cin >> x[i];
}
for(int i =0;i<n;i++){
cin >> y[i];
}
if(n <=3) {
cout << n;
return 0;
}
int Max = -1;
for(int i = 0;i < n;i++){
for(int j = 0; j< n;j++){
if(j==i)
continue;
for(int k = 0;k <n;k++){
if(k==i||k==j)
continue;
m = 0;
for(int l = 0;l<n;l++){
if(l==i||l==j||l==k)
continue;
if((x[i]-x[j])*(x[k]-x[l])==-(y[i]-y[j])*(y[k]-y[l]))
m++;//如果四个点相互构成的直线能两两垂直,数量+1
else if((x[i]-x[l])*(y[l]-y[j])==(y[i]-y[l])*(x[l]-x[j]))
m++;//如果这个点在这之前构成的直线上,那么也是成立的,数量+1
}
Max = max(Max,m);
}
}
}
cout << Max+3;
return 0;
**
核心代码 这块写错了
if((x[i]-x[j])*(x[k]-x[l])==-(y[i]-y[j])*(y[k]-y[l]))
m++;//如果四个点相互构成的直线能两两垂直,数量+1
else if((x[i]-x[l])*(y[l]-y[j])==(y[i]-y[l])*(x[l]-x[j]))
m++;//如果这个点在这之前构成的直线上,那么也是成立的,数量+1**
参考链接https://blog.csdn.net/basketball616/article/details/86696071