提交时间:2026-03-06 15:22:36
运行 ID: 85168
def hanoi(n, source, target, auxiliary): """ 汉诺塔递归求解函数 参数: n: 盘子数量 source: 源柱子 target: 目标柱子 auxiliary: 辅助柱子 """ if n == 1: # 基础情况:只有一个盘子,直接移动 print(f"{source}->{n}->{target}") else: # 递归步骤: # 1. 将前n-1个盘子从源柱子借助目标柱子移到辅助柱子 hanoi(n-1, source, auxiliary, target) # 2. 将最大的盘子从源柱子移到目标柱子 print(f"{source}->{n}->{target}") # 3. 将n-1个盘子从辅助柱子借助源柱子移到目标柱子 hanoi(n-1, auxiliary, target, source) def main(): """ 主函数:解析输入并调用汉诺塔求解函数 """ try: # 读取输入 line = input().strip() parts = line.split() # 解析输入参数 n = int(parts[0]) # 盘子数量 source = parts[1] # 源柱子名称 auxiliary = parts[2] # 辅助柱子名称 target = parts[3] # 目标柱子名称 # 验证输入范围 if n <= 0 or n >= 20: print("盘子数量应在1到19之间") return # 求解汉诺塔问题 hanoi(n, source, target, auxiliary) except IndexError: print("输入格式错误,请按'数字 源柱子 辅助柱子 目标柱子'格式输入") except ValueError: print("第一个参数必须是整数") except Exception as e: print(f"发生错误: {e}") if __name__ == "__main__": main()