#include
#define N 4//注意这一步,确定输入几个点的。。。改数字就好
int tt(int p[][2],int a,int b)
{
int temp[N],k=0;
int t;
int i;
int j;
for(i=0;i0)
temp[k++]=1;
else
temp[k++]=-1;
}
for(j=1;j<k;j++)
{
if(temp[0]!=temp[j]) return 0;
}
return 1;
}
int real(int p[][2])
{
int flag[N],m=0;
int i,j;
for(i=0;i<N;i++)
{
flag=0;
}
for( i=0;i<N;i++)
{
for(j=1;j<N;j++)
{
if(flag[j]) continue;
if(tt(p,m,j))
{
flag[m]=1;
m=j;
break;
}
}
}
flag[m]=1;
for(i=0;i<N;i++)
{
if(flag==0)
return 0;
}
if(tt(p,0,m)) return 1;
return 0;
}
void main()
{
int p[N][2];
int i;
printf("请输入这N个点坐标:\n");
for(i=0;i<N;i++)
{
printf("第%d个点坐标:",i+1);
scanf("%d,%d",&p[0],&p[1]);
printf("%d,%d\n",p[0],p[1]);
}
if (real(p))
printf("能");
else
printf("不能");
}
题目是输入N个店的坐标,判断这N个点能否构成一个凸多边形
|