给出下列代码注释和运行事例:#include <stdio.h> #include <stdlib.h> #define MAX_N 100 int n; int ta[MAX_N], tb[MAX_N]; int cmp(const void *a, const void *b) { return *(int *)a - *(int *)b; } int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &ta[i]); } for (int i = 0; i < n; i++) { scanf("%d", &tb[i]); } qsort(ta, n, sizeof(int), cmp); qsort(tb, n, sizeof(int), cmp); int ans = 0; int j = 0; for (int i = 0; i < n; i++) { if (ta[i] > tb[j]) { ans++; j++; } } printf("%d\n", ans); return 0; }
时间: 2024-03-17 08:40:45 浏览: 60
注释如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 100 // 声明常量 MAX_N,表示数组最大长度
int n; // 声明变量 n,表示数组长度
int ta[MAX_N], tb[MAX_N]; // 声明两个数组 ta 和 tb,长度为 MAX_N
/* 自定义比较函数,用于 qsort 排序 */
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
scanf("%d", &n); // 读入 n
for (int i = 0; i < n; i++) { // 读入数组 ta
scanf("%d", &ta[i]);
}
for (int i = 0; i < n; i++) { // 读入数组 tb
scanf("%d", &tb[i]);
}
qsort(ta, n, sizeof(int), cmp); // 对数组 ta 进行排序
qsort(tb, n, sizeof(int), cmp); // 对数组 tb 进行排序
int ans = 0; // 声明变量 ans,表示比赛次数
int j = 0; // 声明变量 j,表示下标
for (int i = 0; i < n; i++) { // 从数组 ta 的最小值开始比较
if (ta[i] > tb[j]) { // 如果 ta 的马速度大于 tb 的马速度
ans++; // 比赛次数加一
j++; // 下标加一,继续比较下一个马匹
}
}
printf("%d\n", ans); // 输出比赛次数
return 0;
}
```
运行事例:
输入:
```
5
1 3 2 4 5
2 4 5 1 3
```
输出:
```
4
```
解释:田忌的马按照速度排序后为 1 2 3 4 5,齐王的马按照速度排序后为 1 2 3 4 5。田忌的第一匹马比齐王的第二匹马慢,所以比赛第一场使用田忌的第一匹马和齐王的第一匹马。田忌的第二匹马比齐王的第三匹马慢,所以比赛第二场使用田忌的第二匹马和齐王的第二匹马。田忌的第三、四、五匹马分别和齐王的第三、四、五匹马比赛。共进行了 4 场比赛。
阅读全文