求dalao修改70分代码c++14(GCC9)
查看原帖
求dalao修改70分代码c++14(GCC9)
677589
hanzuorui楼主2022/7/20 10:41
#include <stdio.h>
int T,N,H,R,x[1005],y[1005],z[1005],i,j,flag[1005][1005],yes[25];
int abs(int a)
{
	if(a<0)
	{
		return -a;
	}
	return a;
}
bool up(int a,int b,int c)
{
	if(abs(H-c)<=R)
	{
		return 1;
	}
	return 0;
}
bool un(int a,int b,int c)
{
	if(abs(c)<=R)
	{
		return 1;
	}
	return 0;
}
bool eo(int a1,int b1,int c1,int a2,int b2,int c2)
{
	if((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2)+(c1-c2)*(c1-c2)<=(4*R*R))
	{
/*		printf("eo=1");
		system("pause");*/
		return 1;
	}
	return 0;
/*	printf("eo=0");
	system("pause");*/
}
void dfs(int a,int b,int c)
{
	if(yes[i]==1)
	{
		return ;
	} 
	else if(up(a,b,c)==1)
	{
		yes[i]=1;
/*		printf("\n此数据符合退出标准:x:%d y:%d z:%d\n",a,b,c);
		system("pause");*/
		return ;
	}
	else
	{
		for(int l=1;l<=N;l++)
		{
			if(eo(a,b,c,x[l],y[l],z[l])==1&&flag[j][l]==0&&flag[l][j]==0)
			{
/*				printf("\n此数据符合连接标准:x:%d y:%d z:%d\n",x[l],y[l],z[l]);
				system("pause");*/
				flag[j][l]=1;
				flag[l][j]=1;
				dfs(x[l],y[l],z[l]);
				flag[j][l]=0;
				flag[l][j]=0;
			}
		}
	}
}
int main()
{
	scanf("%d",&T);
//	printf("\n输出 T:%d\n",T);
	for(i=1;i<=T;i++)
	{
		scanf("%d%d%d",&N,&H,&R);
		for(j=1;j<=N;j++)
		{
			scanf("%d%d%d",&x[j],&y[j],&z[j]);
		}
/*		printf("\n第%d组\n",i);
		printf("N:%d H:%d R:%d\n",N,H,R);
		for(j=1;j<=N;j++)
		{
			printf("x[%d]:%d y[%d]:%d z[%d]:%d\n",j,x[j],j,y[j],j,z[j]);
		}
		system("pause");*/
		for(j=1;j<=N;j++)
		{
			if(un(x[j],y[j],z[j]))
			{
/*				printf("\n第%d组符合进入标准\n",j);
				system("pause");*/
				dfs(x[j],y[j],z[j]);
			}
			if(yes[i]==1)
			{
				break;
			}
		}
	}
	for(i=1;i<=T;i++)
	{
		if(yes[i]==1)
		{
			printf("Yes\n");
		}
		else
		{
			printf("No\n");
		}
	}
	return 0;
}

XIE~

2022/7/20 10:41
加载中...