gpt4 book ai didi

c - 汉诺塔 - 用户正在移动磁盘 (c)

转载 作者:行者123 更新时间:2023-11-30 21:38:34 27 4
gpt4 key购买 nike

我目前正在尝试制作一个c程序,首先要求用户输入磁盘的数量,然后允许用户自由移动磁盘。
不过,它必须有原汉诺塔的规则,比如较大的圆盘不能放在较小的圆盘上。
另外,极点是“0,1,2”

例如,

输入: 5
输出:
0: 5 4 3 2 1
1:x
2: x

输入: 0 1
输出:

0: 5 4 3 2
1:1
2: x

输入: 3 3
由于没有极点 3,程序结束

我想得到提示吗?有点像我开始编码的方式。
谢谢!

最佳答案

您可以制作代表 3 个极点的 2d 数组。

获取用户输入并初始化

arr[2][number] = {0};
for(i=0; i<number; i++){
arr[0][i] = number-i;
}

并启动一个循环,帮助用户输入2个数字并进行移动操作。您需要检查几个条件,例如

  1. if k > l, arr[x][k] < arr[x][l] 其中 x, k, l 为真数
  2. 如果输入的数字不正确(如您的示例)

也许代码可以像下面这样。

scanf("%d %d", &n1, &n2);
while(n1<3 && n1>=0 && n2 <= number &&n2 > 0){
/// deleteDisk: find last component which is not zero and make it zero and return deleted disk size
disk = deleteDisk(arr, n1);
/// addDisk: change first zero to disk, return 0 if violates condition 1
err = addDisk(arr, n2, disk);
if (err == 0)
break;
/// arrayPrint: print 2d array til zero
arrayPrint;
scanf("%d %d", &n1, &n2);
}

关于c - 汉诺塔 - 用户正在移动磁盘 (c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com