¡Esperando en línea, buscando urgentemente una pregunta sobre programación en lenguaje C! ! ! La respuesta correcta le enviará directamente un sobre rojo de WeChat de 20 yuanes.
Problema de casco convexo. Geometría computacional. #include
#include
struct?node
{
¿largo?largo? x,y;
}a[100005],b[100005];
long?long?mul(nodo?p1,nodo?p2,nodo?p3)
{
¿regresar?(p2.x-p1.x)*(p3.y-p1.y)-(p3.x-p1.x)*(p2.y-p1 .y);
}
int?main()
{
int?n,m,i,baja,alta ,mid,flag;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i< n;i++)
scanf("%lld%lld",&a[i].x,&a[i].y);
scanf("%d",&m );
for(i=0;i scanf("%lld%lld",&b[i].x,&b[i].y ); bandera=0; for(i=0;i { si(mul (a[0],a[1],b[i])>=0||mul(a[0],a[n-1],b[i])<=0) { flag=1; goto?loop; } low=2;?high=n-1; mientras(bajo { medio=(bajo+alto)>>1; if(mul( a[0],a[medio],b[i])>0) alto=medio; else?bajo=medio+1; } if(mul(a[bajo],a[bajo-1],b[i])<=0) { marca =1; ir a?bucle; } } bucle:if(bandera) printf("NO\n"); else?printf("SÍ\n"); } return?0; } Publicado desde blogs.com/dream-wind/archive/2012/05/23/2514694.html También incluido en la descripción del algoritmo.