⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pro_1_1.pas

📁 介绍动态规划算法方面的论文: 动态规划的深入探讨/基本动态规划问题的扩展
💻 PAS
字号:
Program Pro_1_1;                        	{用搜索算法解决例1的程序}

Const
  Max           =300;				{最多城市数}
  Inputfile     ='Input.Txt';			{输入文件}
  Outputfile    ='Output.Txt';			{输出文件}
  Big           =1000000;			{最大整数}

Type
  Maps          =Array [1..Max] Of Integer;	{地图类型说明}

Var
   Se           :Set Of Byte;			{一个记录还未访问过的城市的集合}
   Map          :Array[1..Max] Of ^maps;	{地图数组}
   Qiu,Pr       :Array[1..Max] Of Byte;		{最短路径的数组}
   F            :Text;				{文件变量}
   Lp		:Integer;			{最短路径的城市数}
   N,M       	:Integer;			{输入的数据}
   Min          :Longint;			{最短路径的长度}


 Procedure Init;				{初始化过程}
 Var
   I,J,K,W      :Integer;
  Begin
     Assign(F,Inputfile);
     Reset(F);
        Readln(F,N,M);
        For I:=1 To N Do			{读入数据}
          Begin
            New(Map[I]);
            Fillchar(Map[I]^,Sizeof(Map[I]^),0);
          End;
        For I:=1 To M Do
          Begin
            Readln(F,J,K,W);
            Map[J]^[K]:=W;
          End;
     Close(F);
  End;

 Procedure Search(Dep:Byte;Al:Longint);		{寻找最短路径}
 Var
   I            :Byte;
   Begin
     If Al>=Min Then Exit;			{砍枝条件}
     If Qiu[Dep-1]=N Then			{如果比当前还小,记录}
       Begin
         Min:=Al;
         Pr:=Qiu;
         Lp:=Dep-1;
       End
     Else
      For I:=2 To N Do				{访问所有没访问过的城市}
       If (I In Se) And (Map[Qiu[Dep-1]]^[I]>0) Then
        Begin
          Exclude(Se,I);
          Qiu[Dep]:=I;
             Search(Dep+1,Al+Map[Qiu[Dep-1]]^[Qiu[Dep]]);
          Include(Se,I);
        End;
   End;

 Procedure Print;				{输出数据}
 Var
   I            :Integer;
  Begin
    Assign(F,Outputfile);
    Rewrite(F);
      Writeln(F,Min);
      For I:=1 To Lp Do
        Write(F,Pr[I],' ');
    Close(F);
  End;

Begin
  Init;						{输入数据}
  Se:=[2..N];					{各项值初始化}
  Qiu[1]:=1;
  Min:=Big;
  Search(2,0);					{寻找最短路径}
  Print;					{输出}
End.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -