我知道我是真的菜,搞指针一直报错,只能硬来了。。。。。。

Description

冰墩墩和冰壶

题目描述

冰壶是被誉为“冰面上的国际象棋”,其计分规则是各自投壶,最后在大本营内,你有几个壶离圆心比对方所有壶离圆心都近就得到几分。 比如红方有两个壶,分别在坐标(1,1),(−2,1);黄方也有两个壶,分别在(1,0),(0,2)。 由于黄方的第一个壶离圆心更近,而黄方的第二个壶没有红方第一个壶近,所以最后黄方得1分,红方不得分。

现在冰墩墩每次都选择红方,它想知道它到底得了多少分?

9k=

输入格式

第一行是一个整数T(1≤T≤3000),表示样例的个数。

每个样例的第一行是一个整数n(1≤n≤16),表示冰壶的数量。 以后每行一个冰壶的信息,为三个部分,第一个是一个字符,表示冰壶的颜色(R表示红色,Y表示黄色),后面是两个整数(数值的绝对值不超过1000),表示冰壶的坐标。

输入数据保证不会出现两个壶在同一个坐标。

输出格式

依次输出每个样例的结果。结果为一行,分为两个部分,如果没有让对方得分,输出“Win”和分数,否则输出”Lose”和对方得分的分数,两者之间相隔一个空格。

样例输入

2
4
Y 1 1
R -2 1
R 1 0
Y 0 2
4
Y 1 1
R 0 1
R 1 0
Y 0 2

样例输出

Win 1
Win 2

 我知道我是真的菜,搞指针一直报错,只能硬来了。。。。。。

#include<stdio.h>
#include<math.h>
int main()
{
		int z=0;
			int v=0;
		double a[10000]={0};
		double b[10000]={0};
		int sum;
		double x,y;
				int io,jo,ko;
				double max1=1000000000;
				double max2=1000000000;
				char wino;
	char c;
	int i,j,k,n,num;
	i=0;
	scanf("%d",&n);
	for(;i<n;i++)
	{
		max2=1000000000;
		max1=1000000000;
		scanf("%d",&num);
		j=0;
		z=0;
		v=0;
		
		for(;j<num;j++)
		{
			getchar();
			scanf("%c %lf %lf",&c,&x,&y);
			if(c=='R')
			{
				a[z]=sqrt(x*x+y*y);
				z++;	
			}
			if(c=='Y')
			{
				b[v]=sqrt(x*x+y*y);
				v++;
			}
			
		}
			z--;
			v--;
	
			io=0;
			
				for(jo=0;jo<=z;jo++)
				{
					
					if(a[jo]<max1)
					{
						max1=a[jo];
					}
				}
				for(ko=0;ko<=v;ko++)
				{
					if(b[ko]<max2)
					{
						max2=b[ko];
					}
				}
				if(max1<=max2)
				{
					wino='R';
				}
				else{
					wino='Y';
				}
			io=0;
			k=0;
			sum=0;
			jo=0;
			int oo;
			if(wino=='R')
			{
				while(io<=z)
				{
					k=1;
					jo=0;
					oo=1;
					for(;jo<=v;jo++)
					{
						if(a[io]>=b[jo])
						{
							oo=-1;
							break;
						}
					}
					if(oo==1)
					{
						sum++;
					}
					io++;
				}
			}
			if(wino=='Y')
				{
					while(jo<=v)
					{
						k=-1;
						oo=1;
						io=0;
						for(;io<=z;io++)
						{
							if(a[io]<=b[jo])
							{
								oo=-1;
								break;
							}
						}
						if(oo==1)
						{
							sum++;
						}
						jo++;
					}
				}
			
		if(k>0)
		{
		printf("Win %d\n",sum);
		}
		if(k<0)
		{
			printf("Lose %d\n",sum);
		}
		io=0;
	for(;io<=(v+3);io++)
	{

		a[io]=b[io]=0;
	}
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值