贪心算法解决田忌赛马问题C语言代码
时间: 2023-08-02 11:42:26 浏览: 236
以下是贪心算法解决田忌赛马问题的C语言代码:
```
#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;
}
```
该代码中,首先读入输入数据,然后将田忌和齐王的马按照速度从小到大排序。接着,使用贪心算法,从田忌的最慢的马开始比较,如果田忌的马速度大于齐王的马速度,则选择该马进行比赛,并将齐王的马的下标加一,直到比较完所有的马。最后输出比赛的场次即可。
阅读全文