身高从低到高
身高相同体重从轻到重
体重相同维持原来顺序
输入
4
100 100 120 130
40 30 60 50
输出:
2 1 3 4
输入
3
90 110 90
45 60 45
输出
1 3 2
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
typedef struct {
int height;
int weight;
} Person;
int Cmp(const void *a, const void *b)
{
Person *p1 = (Person *)a;
Person *p2 = (Person *)b;
if (p1->height < p2->height) {
return -1;
} else if (p1->height == p2->height) {
return (p1->weight - p2->weight);
} else {
return 1;
}
}
int main()
{
int i, n;
Person *person = NULL;
Person *personBak = NULL;
char s[1000] = {0};
scanf("%d", &n);
person = malloc(sizeof(Person) * n);
if (person == NULL) {
printf("mallco error\n");
return -1;
}
personBak = malloc(sizeof(Person) * n);
if (personBak == NULL) {
printf("mallco error\n");
return -1;
}
memset(personBak, 0, sizeof(Person) * n);
for (i = 0; i < n; i++) {
scanf("%d", &person[i].height);
}
for (i = 0; i < n; i++) {
scanf("%d", &person[i].weight);
}
int j;
memcpy(personBak, person, sizeof(Person) * n);
qsort(person, n, sizeof(Person), Cmp);
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
if ((person[i].height == personBak[j].height)
&& (person[i].weight == personBak[j].weight)) {
printf("%d ", j + 1);
personBak[j].height=0;personBak[j].weight=0;
break;
}
}
}
printf("\n");
return 0;
}
版权声明:本文为weixin_48016432原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。