wang666 发表于 2006-3-29 10:43

[求助]关于安全渡河问题

问题:有3个传教士和3个野人乘船过对岸上,船每次只能载二个人,而且当野人人数超过传教士人数时,野人会把传教士吃掉.他们怎样用这条船工安全把所有人渡过河去.要求用matlab程序将过程演示出来...<br>   初学matlab实在有太多不懂啦,希望有那位高手帮帮忙,谢谢!
[此贴子已经被aspen于2006-3-30 9:26:38编辑过]

happy 发表于 2006-3-29 20:07

回复:(wang666)急!急!急~~~求教

算法问题,自己去找找吧,现在和matlab无关,先找到算法在问吧

yxn2000 发表于 2006-3-29 21:36

是啊<BR>

wang666 发表于 2006-3-30 18:01

急!急!急~~~求教

<P>如果将问题用数字形式表示,如:<BR>初始时为:,结束时为:.即开始时,3个传教士,3个时野人,船在左岸---&gt;后来状态为:3个传教士,3个野人,船在右岸.其中要定义的规则我就不太清楚啦,不知如何将规则表达为数学表达式.请再指点下我啦,谢谢!</P>

happy 发表于 2006-3-30 18:19

回复:(wang666)[求助]关于安全渡河问题

<P>我这里有一个Mathematica实现的方法<BR>你自己去改成matlab的吧,我没那么多时间<BR><BR>a={0,0}; a={0,1}; a={0,2}; a={0,3}; a={3,0}; <BR>a={3,1}; a={3,2}; a={3,3}; a={1,1}; a={2,2}; <BR>d={0,2}; d={2,0}; d={1,1}; d={0,1}; <BR>d={1,0}; i=1; j=1; k=1; s=s={3, 3};<BR>Print[" 南岸 ---- 船上 ----北岸 "]<BR>Do[<BR>         Do = s + (-1)^i*d;<BR>                t = 0;<BR>                Do == a, t = 1], {k, 1, 10}];<BR>                  If];<BR>         1 == Mod; m = 1; u = 0;<BR>            If == s, u = 1; Break[]], {m, 1, i - 1, 2}]];<BR>            If = d; Break[]], {j, 1, 5}];<BR>            If; Break[]];<BR>            b = {3, 3} - s;<BR>            Print, "----", c, "----", b];<BR>If == {0, 0}, Break[]], <BR>{i, 1, 12}]</P>

wang666 发表于 2006-3-30 18:47

<P>谢谢啦,你的提示很有用....</P>
页: [1]
查看完整版本: [求助]关于安全渡河问题