我目前正在尝试制作一个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
我想得到一个提示吗?有点像我可以开始编码的方式。
谢谢!
答案 0 :(得分:0)
您可以制作代表3个极点的2d阵列。
获取用户输入并进行初始化
arr[2][number] = {0};
for(i=0; i<number; i++){
arr[0][i] = number-i;
}
并启动一个循环,该循环可帮助用户输入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);
}