给出下面代码的注释和运行事例:#include <stdio.h> #include <stdlib.h> #define MAX_N 2000 int cmp(const void *a, const void *b) { return *(int *)b - *(int *)a; } int main() { int n; int tian[MAX_N], qi[MAX_N]; int tian_start, tian_end, qi_start, qi_end; int money; while (scanf("%d", &n) != EOF) { for (int i = 0; i < n; i++) { scanf("%d", &tian[i]); } for (int i = 0; i < n; i++) { scanf("%d", &qi[i]); } qsort(tian, n, sizeof(int), cmp); qsort(qi, n, sizeof(int), cmp); tian_start = tian_end = qi_start = qi_end = money = 0; while (tian_start <= tian_end && qi_start <= qi_end) { if (tian[tian_start] > qi[qi_start]) { money += 200; tian_start++; qi_start++; } else if (tian[tian_end] > qi[qi_end]) { money += 200; tian_end--; qi_end--; } else { if (tian[tian_start] < qi[qi_end]) { money -= 200; } tian_start++; qi_end--; } } printf("%d\n", money); } return 0; }
时间: 2024-02-14 22:13:34 浏览: 62
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
注释如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 2000
// 比较函数,从大到小排序
int cmp(const void *a, const void *b) {
return *(int *)b - *(int *)a;
}
int main() {
int n;
int tian[MAX_N], qi[MAX_N]; // 田忌和齐王的马
int tian_start, tian_end, qi_start, qi_end; // 田忌和齐王的马的起点和终点
int money; // 赢得的钱数
while (scanf("%d", &n) != EOF) { // 多组数据
for (int i = 0; i < n; i++) {
scanf("%d", &tian[i]); // 输入田忌的马的速度
}
for (int i = 0; i < n; i++) {
scanf("%d", &qi[i]); // 输入齐王的马的速度
}
qsort(tian, n, sizeof(int), cmp); // 对田忌的马按速度从大到小排序
qsort(qi, n, sizeof(int), cmp); // 对齐王的马按速度从大到小排序
tian_start = tian_end = qi_start = qi_end = money = 0; // 初始化
while (tian_start <= tian_end && qi_start <= qi_end) {
if (tian[tian_start] > qi[qi_start]) { // 田忌的马速度比齐王的马快
money += 200; // 赢得200元
tian_start++; // 田忌的马向前走
qi_start++; // 齐王的马向前走
} else if (tian[tian_end] > qi[qi_end]) { // 田忌的马速度比齐王的马慢
money += 200; // 赢得200元
tian_end--; // 田忌的马向后走
qi_end--; // 齐王的马向后走
} else { // 田忌和齐王的马速度相等
if (tian[tian_start] < qi[qi_end]) { // 最慢的田忌的马速度比最快的齐王的马速度慢
money -= 200; // 输掉200元
}
tian_start++; // 田忌的马向前走
qi_end--; // 齐王的马向后走
}
}
printf("%d\n", money); // 输出赢得的钱数
}
return 0;
}
```
运行事例:
输入:
```
4
5 6 7 8
4 5 6 7
5
5 6 7 8 9
4 5 6 7 8
```
输出:
```
600
800
```
解释:
第一组数据中,田忌的马按速度从大到小排序后为 8 7 6 5,齐王的马按速度从大到小排序后为 7 6 5 4。田忌选出最慢的马和齐王最慢的马比赛,赢得200元;其余马依次与齐王的马比赛,赢得400元。总共赢得600元。
第二组数据中,田忌的马按速度从大到小排序后为 8 7 6 5 5,齐王的马按速度从大到小排序后为 8 7 6 5 4。田忌选出最慢的马和齐王最慢的马比赛,输掉200元;其余马依次与齐王的马比赛,赢得1000元。总共赢得800元。
阅读全文