Problem Description
有n个无聊的人在比赛跳远,看谁跳的最远。每个人可以跳3次,这个人的成绩就是三次距离里面的最大值。例如,一个人跳3次的距离分别时10, 30和20,那么这个人的成绩就是30。给出每个人三次跳的距离,问最终每个人的排名是多少。
Input
输入文件的第一行有一个整数T (1≤T≤100),表示测试数据的组数。对于每组测试数据:第一行包括一个整数n (2≤n≤3), 表示人数. 接下来n行, 每行包含三个整数ai,bi 和 ci (1≤ai,bi,ci,≤300), 表示第i个人每次的跳的距离。输入数据保证每个人的成绩互不相同。
Output
对于每组数据,输出一行包含n个整数,用一个空格隔开。第i个数表示第i个人的最终名次。
SampleInput
2
3
10 10 10
10 20 30
10 10 20
2
3 4 1
1 2 1
SampleOutput
3 1 2
1 2
提示:
对于第一组数据,3个人的成绩分别时10, 30和20。因此他们最终排名依次是3, 1和2.
对每个人成绩进行求出最大值,对三个人的最大值再进行排序
int max(int a,int b)
{
if(a > b)
return a;
return b;
}
void sort(int a[],int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
if(a[j] < a[j+1])
{
int t = a[j];
a[j] = a[j+1];
a[j+1] =t;
}
}
int main()
{
int n,m,i,j;
int s[3] = {0};
int *max = NULL,*sortmax = NULL;
printf("请输入测试组数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d组的人数:",i+1);
scanf("%d",&m);
max = (int*)malloc(m*sizeof(int));
sortmax = (int *)malloc(m*sizeof(int));
for(j=0;j<m;j++)
{
printf("请输入第%d个人的三组成绩:",j+1);
scanf("%d%d%d",&s[0],&s[1],&s[2]);
max[j] = max(max(a,b),c);
sortmax[j] = max[j];
}
sort(sortmax,3);
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
{
if(max[i] == sortmax[j])
printf("%d ",j+1);
}
}
printf("\n");
free(sortmax):
free(max);
}
return 0;
}