用C#写一段田忌赛马的算法
时间: 2023-11-18 09:50:29 浏览: 107
语言编写程序可以实现什么功能?
用C语言编写程序可以实现很多功能,如操作系统、编译器、网络协议、游戏、图像处理等等。C语言是一种高效、灵活、可移植的编程语言,它可以直接操作内存,并且具有丰富的库函数和指针操作,可以方便地进行底层开发。同时,C语言也是现代编程语言的基础,掌握C语言可以更好地理解其他编程语言的工作原理。
相关问题
用Python写田忌赛马算法
田忌赛马问题是一道经典的算法问题,下面是使用Python实现田忌赛马的代码:
```python
def cmp(a, b):
if a > b:
return 1
elif a < b:
return -1
else:
return 0
def tianji_saiche(tian, qi):
n = len(tian)
tian.sort()
qi.sort()
win = 0
lt, rt = 0, n - 1
for i in range(n):
if cmp(tian[lt], qi[i]) == 1:
win += 1
lt += 1
else:
rt -= 1
return win
tian = [2, 3, 4, 5, 6, 7, 8, 9]
qi = [1, 2, 3, 4, 5, 6, 7, 8]
print(tianji_saiche(tian, qi)) # 4
```
在这个代码中,我们首先定义一个比较函数`cmp`,用于比较两个数字的大小。然后我们对田忌和齐王的马进行排序,从小到大进行比较。如果田忌的马可以赢过齐王的马,则选择田忌的最差的马与齐王的马比赛,否则选择田忌的最好的马与齐王的马比赛。最后返回田忌能够赢得的马的数量。
在这个例子中,田忌的马的速度从2到9不等,齐王的马的速度从1到8不等,我们期望田忌能够赢得4匹马。
田忌赛马算法的java代码
田忌赛马算法是一种贪心算法,用于解决马赛比赛的问题。以下是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分别指向田忌和魏国当前使用的马匹,然后进行比赛。如果田忌的马匹比魏国的马匹跑得快,就胜利;否则,就失败。比赛结束后,输出田忌胜利和失败的场数即可。
阅读全文