河内塔-用户正在移动磁盘(c)

时间:2018-10-14 12:37:04

标签: c

我目前正在尝试制作一个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

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

1 个答案:

答案 0 :(得分:0)

您可以制作代表3个极点的2d阵列。

获取用户输入并进行初始化

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

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

  1. 如果k> l,则arr [x] [k]
  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);
}