From 3fb50627f940878bb6d8443d2f600f8f573a7bda Mon Sep 17 00:00:00 2001 From: Mars Liu Date: Fri, 24 Feb 2023 18:36:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B1=89=E8=AF=BA=E5=A1=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1.in" | 1 + .../2.in" | 1 + .../3.in" | 1 + .../exercises.md" | 38 +++++++++++++++++++ .../hanoi.py" | 13 +++++++ 5 files changed, 54 insertions(+) create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/1.in" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/2.in" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/3.in" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/exercises.md" create mode 100644 "exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/hanoi.py" diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/1.in" "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/1.in" new file mode 100644 index 0000000..e440e5c --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/1.in" @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/2.in" "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/2.in" new file mode 100644 index 0000000..7813681 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/2.in" @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/3.in" "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/3.in" new file mode 100644 index 0000000..56a6051 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/3.in" @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/exercises.md" "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/exercises.md" new file mode 100644 index 0000000..669c3d6 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/exercises.md" @@ -0,0 +1,38 @@ +# 汉诺塔 + +定义:汉诺塔 (Tower of Hanoi)是根据一个传说形成的数学问题: + +有三根杆子A,B,C。A杆上有 N 个 (N>1) 穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至 C 杆: + +1. 每次只能移动一个圆盘; +2. 大盘不能叠在小盘上面。 +3. 为简单起见,我们限定不超过10个盘子 + +问题:如何移?最少要移动多少次? + +## 输入描述 + +输入塔的层数 + +## 输出描述 + +逐行输出每一个移动步骤。最后一行输出执行了多少步 + +## 输入样例 + +3 + +## 输出样例 + +A -> C +A -> B +C -> B +A -> C +B -> A +B -> C +A -> C +7 times + +## 提示 + +可将圆盘临时置于 B 杆,也可将从 A 杆移出的圆盘重新移回 A 杆,但都必须遵循上述两条规则。 diff --git "a/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/hanoi.py" "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/hanoi.py" new file mode 100644 index 0000000..003c539 --- /dev/null +++ "b/exercises/liuxin/\347\256\200\345\215\225/\346\261\211\350\257\272\345\241\224/hanoi.py" @@ -0,0 +1,13 @@ +def hanoi(n, a, b, c): + if n == 1: + print(a, ' -> ', c) + else: + hanoi(n - 1, a, c, b) + hanoi(1, a, b, c) + hanoi(n - 1, b, a, c) + + +if __name__ == '__main__': + levels = int(input("dash count:")) + hanoi(levels, 'A', 'B', 'C') + print(2**levels-1, " times") -- GitLab