A B 两个城市之间设有N个路站(如下图的S1,且N<100),城市与路站之间。路站与路站之间各有若干条路段(各路段<20)且每条路段上的距离均为一个整数)
AB的一条通路是指:从A出发,可经过任一路段到达S1,再从S1出发经过任一路段,最后到达B。通路上路段距离之和称为通路距离(最大距离《1000)
当所有路段距离给出之后,求所有不同距离的通路个数(相同距离仅记一次)。算法说明:本题采用穷举算法
  数据结构:N:记录A,B间路站的个数;
             数组D[I,0]记录第I-1到第I路站间路段的个数;
            D[I,1],D[I,2],记录每个路段距离;
            数组G记录可取到的距离
程序清单
Program chu7_6(input,output);
   var i,j,n,s:integer;
             b:array[0..100] of integer;
             d:array[0..100,0..20] of integer;
             g:array[0..1000] of 0..1
   begin
     readln(n)
     for i:=1 to n+1 do 
       begin 
         readln(d[I,0]);
         for j:=1 to d[I,0] do    readln(d[I,j])
        end;
   d[0,0]:=1;
   for i:=1 to n+1 do  b[i]=1;
   b[0]:=0;
   for i :=1 to 1000 do   g[i]:=0;
     while "B[0]=0" do
        begin 
           s:=0;
           for i:=1 to n+1 do
        s:="S+D[I,B[I]]"
              g[s]:=1;j:=n+1;
            while "B[J]=D[J,0]" do j:=j-1;
            b[j]:=b[j]+1;
            for i:=j+1 to n+1 do    b[i]:=1
         end;
      s:=0;
      for i:=1 to 1000 do
    s:=s+G[I];
     writeln(s);readln
    end
上面加引号的部分为补充内容,请高手给讲解一下为什么,谢谢!