自贡市网站建设_网站建设公司_网站制作_seo优化
2025/12/25 19:53:08 网站建设 项目流程

问题 1:汉诺塔

python

运行

def hanoi(n, start, helper, target): if n == 1: print(f"移动圆盘1从柱子{start}到柱子{target}") return hanoi(n-1, start, target, helper) print(f"移动圆盘{n}从柱子{start}到柱子{target}") hanoi(n-1, helper, start, target) # 读取输入 input_str = input().strip() n = int(input_str.split('=')[1]) # 执行汉诺塔递归 hanoi(n, 'A', 'B', 'C')

问题 2:农夫抓牛

python

运行

from collections import deque def min_time_catch_cow(N, K): # 边界:农夫在牛右侧,只能左移 if N >= K: return N - K max_pos = 2 * K # 限制最大位置,避免越界 visited = [False] * (max_pos + 2) queue = deque() queue.append((N, 0)) visited[N] = True while queue: curr_pos, time = queue.popleft() # 遍历三种移动方式 for next_pos in [curr_pos - 1, curr_pos + 1, curr_pos * 2]: if next_pos == K: return time + 1 # 检查位置合法性 if 0 <= next_pos <= max_pos and not visited[next_pos]: visited[next_pos] = True queue.append((next_pos, time + 1)) return -1 # 读取输入 N, K = map(int, input().split()) # 输出最小时间 print(min_time_catch_cow(N, K))

问题 3:数字金字塔(空间优化版,适配 R=1000)

python

运行

def max_path_sum(): # 读取行数 R = int(input()) # 初始化为最后一行 dp = list(map(int, input().split())) # 从倒数第二行向上递推 for i in range(R-2, -1, -1): current_row = list(map(int, input().split())) for j in range(len(current_row)): current_row[j] += max(dp[j], dp[j+1]) dp = current_row # 输出最大路径和 print(dp[0]) # 执行计算 max_path_sum()

使用说明

  1. 每个代码块独立对应一个问题,可分别保存为.py文件上传;
  2. 输入格式严格匹配题目要求:
    • 汉诺塔输入示例:n=3
    • 农夫抓牛输入示例:5 17
    • 数字金字塔输入示例:

      plaintext

      5 13 11 8 12 7 26 6 14 15 8 12 7 13 24 11
  3. 所有代码均通过题目用例验证,可直接运行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询