1145 Pareto Dominate

Pareto Dominate

1、题目内容

Description
题目描述
给你两个向量X=(x1,x2,…,xn),Y=(y1,y2,…,yn),如果对于任何i,xi≥yi,且至少存在一个j,xj>yj,我们称X支配 Y。 现在给你两个向量,请计算支配关系。

输入
每个样例包含三行,第一行是一个整数n(1≤n≤20),表示向量的维数,如果n为0表示输入结束,这个不需要处理。 第二,三行每行是n个整数,表示向量X和Y的分量值,任何一个分量值的绝对值不超过10,000。

输出
如果X支配Y,输出1;如果X被Y支配,输出-1;否则输出0;

样例输入
2
1 2
2 1
2
1 2
1 3
2
1 3
1 2
2
1 1
1 1
0
样例输出
0
-1
1
0

2、题目分析

在这个题目里,我们首先明白一点就是,可能的情况只有三种,要么是x支配y,要么就是y支配x,不然就是谁也不支配谁(当且仅当x与y的每个坐标都相同的时候)。在读入x与y的坐标后,我们对支配的两个条件依次判断,最后得出支配结果。

3、参考代码

#include<stdio.h>
int  main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n!=0)
	{
		int x[21];
		int y[21];
		int flag1=1; //作为判断x支配y的第一个条件是否满足的标记 
		int flag2=0; // 作为判断x支配y的第二个条件是否满足的标记 
		for(int i=0;i<n;i++) //读入x的坐标 
		{
			scanf("%d",&x[i]);
		}
		for(int j=0;j<n;j++) //读入y的坐标后依次进行支配条件判断 
		{
			scanf("%d",&y[j]);
			if(x[j]<y[j])
			{
				flag1=0;
			}
			if(x[j]>y[j])
			{
				flag2=1;
			}
		}
		if(flag1==1&&flag2==1) //满足x支配y的条件时 
		{
			printf("1\n");
		}
		else if(flag1==0&&flag2==0) //满足y支配x的条件时 
		{
			printf("-1\n");
		} 
		else //剩余的那种情况,谁也不支配谁 
		{
			printf("0\n");
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42987451/article/details/82962691
今日推荐