人,狗,鸡,米均要过河,船需要人划,另外至多还能载一物,而当人不在时,狗要吃鸡,鸡要吃米,问人,狗,鸡,米怎样过河,用MATLAB解答
时间: 2023-06-08 13:07:37 浏览: 280
人狼羊菜渡河问题(含Matlab程序).pdf
这是一道经典的河内塔问题。用MATLAB可以采用递归函数来解答,代码如下:
function hanoi(n,a,b,c)
% n表示盘子个数,a表示起始柱子,b表示目标柱子,c表示中间柱子
if(n==1)
fprintf('%c->%c\n',a,b); % 移动一个盘子直接从a到b
else
hanoi(n-1,a,c,b); % 先将前n-1个盘子从a移动到c上
fprintf('%c->%c\n',a,b); % 再将最后一个盘子从a移动到b上
hanoi(n-1,c,b,a); % 最后将c上的n-1个盘子移动到b上
end
运行hanoi(3,'A','B','C')可以得到输出结果:
A->C
A->B
C->B
其中A、B、C分别表示三个柱子,即原始柱子、目标柱子、中间柱子。每次移动均从一个柱子移动到另一个柱子,采用递归的方式实现。
阅读全文