某超级大国要求把“先发制人”战略注入所有核导弹中。
“先发制人”是指在假设敌人的导弹在假设的发射时间前5分钟发射,
而且是假设敌人已经知道自己的战略,因为全球都知道这个战略.
并请评估你的算法的后果。

解决方案 »

  1.   

    其实这是一个简单的递归算法问题,问题是如何用Pascal表达,我正在想.
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    Type 
      TAttackingType=(atWhenAfter,atWhenBefore,atWhenActtacking);function TimeWhenEnmyAttackingUs(TimeWhenWeAttackHim:TDateTime;EnmyActtackType:TAttackingType):TDateTime;
    begin
      Case EnmyActtackType of
      atWhenAfter :Result:=TimeWhenWeAttackHim+0.05;
      atWhenBefore:Result:=TimeWhenWeAttackHim-0.05;
      else         Result:=TimeWhenWeAttackHim;
      end;
    end;var dtWeAtkEnmy,dtEnmyAtkUS:TDateTime;
        OurAtkType,EnmyAtkType:TAttackingType;  function WeAtkHim(HeAtkUs:TDateTime;OurAttackType,EnmyActtackType:TAttackingType):TDateTime;
      var aWeAtkHim,aHeAtkUs:TDateTime;
      begin
          aWeAtkHim:=TimeWhenEnmyAttackingUs(HeAtkUs,OurAttackType);
          aHeAtkUs:=TimeWhenEnmyAttackingUs(aWeAtkHim,EnmyActtackType);
          if aWeAtkHim<=0 then
          begin
            Result:=0;
            Exit;
          end else if aHeAtkUs>aWeAtkHim then
          begin
            Result:=aWeAtkHim;
            Exit;
          end else
          Result:=WeAtkHim(aHeAtkUs,OurAttackType,EnmyActtackType);
      end;begin
        OurAtkType :=atWhenBefore;
        EnmyAtkType:=atWhenBefore;
        dtEnmyAtkUS:=100; //天后敌人攻击我们
        dtWeAtkEnmy:=WeAtkHim(dtEnmyAtkUS,OurAtkType,EnmyAtkType);
        ShowMessage('We Will Attacking At Time Later:'+FloatToStr(dtWeAtkEnmy));
    end;
    //此程序在dtEnmyAtkUS很大时会堆栈会溢出。不知有没有更好的算法。