#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
struct p{
int x,y,flag;
}point[10];
void con(){
int a,b,c;
int sign1,sign2;
for(int i=0;i<10;i++){
for(int j=i+1;j<10;j++){
a=point[j].y-point[i].y;
b=point[i].x-point[j].x;
c=(point[i].x*point[j].y)-(point[i].y*point[j].x);
sign1=0;
sign2=0;
for(int k=0;k<10;k++){
if((k==j)||(k==i))continue;
if((a*point[k].x+b*point[k].y)==c){
sign1++;
sign2++;
}
if((a*point[k].x+b*point[k].y)>c)
{sign1++;}
if((a*point[k].x+b*point[k].y)<c)
{sign2++;}
}
if((sign1==8)||(sign2==8)){
point[i].flag=1;
point[j].flag=1;
}
}
}
for(i=0;i<10;i++){
if(point[i].flag==1){
cout<<point[i].x<<" "<<point[i].y<<endl;
}
}
}
void main(){
srand(time(NULL));
for(int i=0;i<10;i++){
point[i].flag=0;
point[i].x=rand()%10;
point[i].y=rand()%10;
}
cout<<"坐标点:"<<endl;
for(i=0;i<10;i++){
cout<<point[i].x<<" "<<point[i].y<<endl;
}
cout<<"极坐标点:"<<endl;
con();
}
凸包问题-----蛮力法
猜你喜欢
转载自blog.csdn.net/wanwu_fusu/article/details/82807842
今日推荐
周排行