Python 经典编程题93
引言Python 以其简洁易学、语法优雅等特点而著称,是入门编程语言的不二之选。很多经典的编程题都可以在 Python 中用简洁优雅的方式解决,本文将介绍一些经典的 Python 编程题,并提供详细的代码示例和解析。
1. FizzBuzz
题目: 输出一个范围内的数字,但当数字是 3 的倍数时输出 "Fizz",当数字是 5 的倍数时输出 "Buzz",当数字是 3 和 5 的倍数时输出 "FizzBuzz"。for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
2. 汉诺塔
题目: 有三根柱子 A、B、C,A 柱子上插有 n 个盘子,盘子大小各不相同。现在需要将所有盘子从 A 柱子移动到 C 柱子,每次只能移动一个盘子,并且大的盘子不能放在小的盘子上面。def hanoi(n, a, b, c):
if n == 1:
print(f"从 {a} 移动盘子到 {c}")
return
hanoi(n - 1, a, c, b)
print(f"从 {a} 移动盘子到 {c}")
hanoi(n - 1, b, a, c)
3. 八皇后问题
题目: 在 8x8 棋盘上摆放 8 个皇后,使得任何两个皇后都不在同一行、同一列或同一对角线上。def is_safe(board, row, col):
for i in range(row):
if board[i][col] == 1 or (row - i == abs(col - board[i][col])):
return False
return True
def solve_n_queens(n):
board = [[0 for _ in range(n)] for _ in range(n)]
if solve_n_queens_util(board, 0, n):
return board
return [[]]
def solve_n_queens_util(board, row, n):
if row == n:
return True
for col in range(n):
if is_safe(board, row, col):
board[row][col] = 1
if solve_n_queens_util(board, row + 1, n):
return True
board[row][col] = 0
return False
4. 0-1 背包问题
题目: 有 n 件物品和一个容量为 W 的背包。每件物品有自己的重量和价值,求解将哪些物品放入背包可以使得背包的总价值最大。def knapsack(items, W):
n = len(items)
dp = [[0 for _ in range(W + 1)] for _ in range(n + 1)]
for i in range(1, n + 1):
weight, value = items[i - 1][0], items[i - 1][1]
for j in range(1, W + 1):
if weight 1:
index = (index + m - 1) % len(queue)
(index)
return queue[0]
7. 编辑距离
题目: 给定两个字符串 X 和 Y,求两个字符串的编辑距离,即将 X 转化为 Y 所需的最少编辑操作次数(编辑操作包括插入、删除、替换)。def edit_distance(X, Y):
m, n = len(X), len(Y)
dp = [[0 for _ in range(n + 1)] for _ in range(m + 1)]
for i in range(1, m + 1):
dp[i][0] = i
for j in range(1, n + 1):
dp[0][j] = j
for i in range(1, m + 1):
for j in range(1, n + 1):
if X[i - 1] == Y[j - 1]:
cost = 0
else:
cost = 1
dp[i][j] = min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost)
return dp[m][n]
8. 背包问题(扩展)
题目: 在 0-1 背包问题的基础上,扩展到每个物品可以重复选择。求解将哪些物品放入背包可以使得背包的总价值最大。def unbounded_knapsack(items, W):
n = len(items)
dp = [0 for _ in range(W + 1)]
for i in range(1, W + 1):
for weight, value in items:
if weight
2024-11-30
下一篇:Python 编程入门指南

Python编程一段:从入门到进阶的代码示例与讲解
https://jb123.cn/python/59546.html

Python数据科学与编程:从入门到进阶的完整指南
https://jb123.cn/python/59545.html

深入浅出ECMAScript与JavaScript:从标准到实践
https://jb123.cn/javascript/59544.html

JavaScript GIF 动画:从基础到进阶,玩转动态图像
https://jb123.cn/javascript/59543.html

JavaScript建站全攻略:从入门到进阶,打造你的动态网站
https://jb123.cn/javascript/59542.html
热门文章

Python 编程解密:从谜团到清晰
https://jb123.cn/python/24279.html

Python编程深圳:初学者入门指南
https://jb123.cn/python/24225.html

Python 编程终端:让开发者畅所欲为的指令中心
https://jb123.cn/python/22225.html

Python 编程专业指南:踏上编程之路的全面指南
https://jb123.cn/python/20671.html

Python 面向对象编程学习宝典,PDF 免费下载
https://jb123.cn/python/3929.html