编程 Python 比赛题210


编程比赛是检验编程技能和解决问题能力的极好方式。Python 作为一门用途广泛、易于学习的语言,非常适合编程比赛。本文将介绍一些经典的 Python 比赛题,帮助读者提升编程水平,为比赛做好准备。

1. 最大公约数(GCD)

给定两个非负整数 a 和 b,求出它们的最大公约数(GCD)。GCD 是两个整数的最大公约数,即能同时整除两个整数的最大整数。```python
def gcd(a, b):
while b:
a, b = b, a % b
return abs(a)
```

2. 最小公倍数(LCM)

给定两个非负整数 a 和 b,求出它们的最小公倍数(LCM)。LCM 是两个整数的最小公倍数,即能同时被两个整数整除的最小正整数。```python
def lcm(a, b):
return abs(a * b) // gcd(a, b)
```

3. 斐波那契数列

斐波那契数列是一种特殊数列,它的每一项都是前两项之和。给定一个非负整数 n,求出斐波那契数列的第 n 项。```python
def fibonacci(n):
if n < 2:
return n
else:
return fibonacci(n - 1) + fibonacci(n - 2)
```

4. 汉诺塔

汉诺塔问题是一个经典的递归难题,它涉及三根柱子和一定数量的圆盘。圆盘从小到大依次叠放在一根柱子上。现在需要将所有圆盘移动到另一根柱子上,并且每次只能移动一个圆盘,且不能将大圆盘放在小圆盘上面。```python
def hanoi(n, from_rod, to_rod, aux_rod):
if n == 1:
print(f"Move disk 1 from {from_rod} to {to_rod}")
return
hanoi(n - 1, from_rod, aux_rod, to_rod)
print(f"Move disk {n} from {from_rod} to {to_rod}")
hanoi(n - 1, aux_rod, to_rod, from_rod)
```

5. 走迷宫

迷宫是一个包含一些障碍物的矩形区域。给定一个迷宫地图,求出从迷宫入口到出口的最短路径。```python
def find_path(maze):
# DFS
stack = [(0, 0)]
visited = set()
while stack:
x, y = ()
if x == len(maze) - 1 and y == len(maze[0]) - 1:
return True
if (x, y) in visited:
continue
((x, y))
for dx, dy in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
nx, ny = x + dx, y + dy
if 0

2024-12-09


上一篇:Python编程技能分级

下一篇:揭秘Python编程套路贷:非法牟利的黑暗产业链