田忌赛马算法的java代码
时间: 2023-10-12 17:19:26 浏览: 238
田忌赛马算法是一种贪心算法,用于解决马赛比赛的问题。以下是Java代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 马匹数量
int[] tian = new int[n]; // 田忌的马匹速度
int[] king = new int[n]; // 魏国的马匹速度
for (int i = 0; i < n; i++) {
tian[i] = sc.nextInt();
}
for (int i = 0; i < n; i++) {
king[i] = sc.nextInt();
}
Arrays.sort(tian); // 田忌的马匹从慢到快排序
Arrays.sort(king); // 魏国的马匹从慢到快排序
int tianIndex = 0; // 田忌当前使用的马匹下标
int kingIndex = 0; // 魏国当前使用的马匹下标
int win = 0; // 田忌胜利的场数
int lose = 0; // 田忌失败的场数
while (tianIndex < n && kingIndex < n) { // 只要还有马匹可用,就继续比赛
if (tian[tianIndex] > king[kingIndex]) { // 如果田忌的马匹比魏国的马匹跑得快,就胜利
tianIndex++; // 田忌使用下一匹马匹
kingIndex++; // 魏国使用下一匹马匹
win++; // 田忌胜利场数加一
} else { // 如果田忌的马匹比魏国的马匹跑得慢,就失败
tianIndex++; // 田忌使用下一匹马匹
lose++; // 田忌失败场数加一
}
}
System.out.println(win + " " + lose);
}
}
```
在上述代码中,我们先读入马匹数量和田忌、魏国的马匹速度,并将田忌和魏国的马匹速度从慢到快排序。然后,我们使用两个指针tianIndex和kingIndex分别指向田忌和魏国当前使用的马匹,然后进行比赛。如果田忌的马匹比魏国的马匹跑得快,就胜利;否则,就失败。比赛结束后,输出田忌胜利和失败的场数即可。
阅读全文