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 编程入门指南
JavaScript技术赋能未来汽车:从智能座舱到车联网的深度解析
https://jb123.cn/javascript/71599.html
JavaScript `.apply()` 方法:深挖 `this` 绑定与数组参数的奥秘
https://jb123.cn/javascript/71598.html
玩转Linux虚拟机:你的自动化利器——脚本语言全攻略
https://jb123.cn/jiaobenyuyan/71597.html
编写优质脚本代码:提高效率与可维护性的关键实践
https://jb123.cn/jiaobenyuyan/71596.html
工业自动化:组态王脚本语言VBScript全面指南与开发实战
https://jb123.cn/jiaobenyuyan/71595.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