to jearry_zhou(jearry) 
拿出解决方案啊

解决方案 »

  1.   

    解决方案就是用程序算,把它看作一个二位数组,Array[4,4]
    做一个函数fun(x,y)
    该函数是一个递归函数,
    {
    每一次判断有几种走法,据题意不超过四种,同时的判断不要越界,即只能在0-4徘徊,其不能有
    走过的,然后循环递归,走不动时返回路线
    }调用该函数时传入参数x,y  需循环传入,对每一个可能的点
      

  2.   

    走每一步时x,y只能加减1,其要满足上述条件,且不能为Array[1,4]
      

  3.   

    从第一排(行)的最后一个进入,
    一直到第一排(行)的第一个,
    往下到第一列的最后一个,
    往右到最后一行的第一个,
    往上到最后一列的第五个,也就是不能走的那一个的下面第三个,
    往内走一个,到第24列的第五个,
    往下沿来路一直回到第二列的第五个,
    往内走一个到第三列的第五个,
    往下沿来路到第23列的第五个,
    如果循环直到第五行以下的全部走完,从第五行的第14个上面,
    往上一个,
    往左到第四行第二个,
    往上一个,
    右一个,
    下一个,

    直到第二行第14个,
    右一个,
    下两个,
    右一个,
    上两个,

    直到第四行的第24个,
    再右一个,上一个从第三行的第25个出来。
    我用Excel走过n遍!
      

  4.   

      关于那个“鱼”的问题,考虑了一下,我认为,这个题的关键在于他们说话的逻辑,而不是在于“鱼”的多少。所以,可以这样设定(程序思维):将“甲乙丙”分别作为状态的起点,在起点时,认为他们是正确的。显而易见,每个起点的初始状态有两种"true"or "false",然后,以这个起点为基础,向下发展,如果逻辑冲突,那么初始假设是错误的,换下一种假设。
      语义描述如下:乙说谎 -〉 (乙)=0
      一个子分枝描述如下:
         条件:起点,甲不说谎 (甲)=1
              begin 
              第一次判断(甲言):(乙)=0
         第二次判断(乙言):not( (甲)=0;(丙)=0)
                等同:(甲)=1;(丙)=1    (没有产生矛盾)
         第三次判断(丙言):(甲)=0
                与起始条件产生矛盾,假设错误。
         end;
      第二次判断时,加上"not"是根据第一次判断的结果((乙)=0)得出的。
      同样,第三次判断,不加"not"是根据第二次判断结果定出的。
      这样,经过最多6次(3*2)判断,就可以找到最後的正确逻辑,然后根据正确逻辑分配“鱼”我想一定难不倒大家的。  好了,以上都是纸上谈兵,见笑。但是,应该还是有一点道理的,大家多提提意见。
      

  5.   

    to aizb(aizb) 
    哪有25列啊?
    一共才5行5列
      

  6.   

    晕~~~~~~~~~~ 看来偶得忍痛放弃编程了 wuwuwww~~~`  
      

  7.   

    用递规完成回溯,源程序如下,最终执行结果,此题无解
    var
      gezi : array [1..5,1..5] of Integer;
      x,y,count :Integer;
    function go(AX,AY:Integer):Boolean;
    begin
      if(x+AX < 1)or(x+AX >5)or(y+AY < 1)or(Y+AY >5)then
      begin
        result := false;
        Exit;
      end;
      if(gezi[x+AX,y+AY]<>0)then
      begin
        result := false;
        Exit;
      end;
      x := x + AX;
      y := y + AY;
      count := count + 1;
      gezi[x,y] := count;
      if(go(-1,0))then
      begin
        result := true;
        Exit;
      end;
      if(go(1,0))then
      begin
        result := true;
        Exit;
      end;
      if(go(0,1))then
      begin
        result := true;
        Exit;
      end;
      if(go(0,-1))then
      begin
        result := true;
        Exit;
      end;
      if(count = 24)
      then result := true
      else begin
        count := count -1;
        gezi[x,y] := 0;
        x := x - AX;
        y := y - Ay;
        result := false;
      end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      i,j : Integer;
    begin
      for x := 1 to 5 do
      begin
        for y := 1 to 5 do
        begin
          for i := 1 to 5 do
          begin
            for j := 1 to 5 do
            begin
              gezi[i,j] := 0;
            end;
          end;
          gezi[5,2] := 25;
          count :=0;
          gezi[x,y] := 1;
          if(go(-1,0))then
          begin
            showmessage('ok');
            Exit;
          end;
          if(go(1,0))then
          begin
            showmessage('ok');
            Exit;
          end;
          if(go(0,-1))then
          begin
            showmessage('ok');
            Exit;
          end;
          if(go(0,1))then
          begin
            showmessage('ok');
            Exit;
          end;
        end;
      end;
      showmessage('no answer');
    end;
      

  8.   

    to inprises(何许)
    有解你到是说呀