货郎担问题的求解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CLS
PRINT”货郎担问题的穷举解法”
PRINT”* * * * * * * * *”PRINT”“
INPUT”请输入全部村庄数目N=”;n
DIM d(n,n):s()=0
FOR i=1TO n
FOR j=1TO n
READ d(i,j)
IF d(i,j)>s0 THEN s0=d(i,j)
NEXT j
NEXT i
P=1
FOR i=1TO n-3
P=p*(i+1)
NEXT i
DIM x(p*(n-1),n-1),f(p*(n-1))
FOR K=1 TO n-1
x(0,K)=K
NEXT K
FOR i=1TO n-1
FOR K=1 TO n-1
x((i-1)*p+1,K)=x((i-1)*p,K)+1
IF x((i-1)*p+1,K)>n THEN x((i-1)*p+1,K)=x((i-1)*p+1,K)-n+1 NEXT K
m=n-2
FOR j=2 TO p
s=d(1,i+1)
FOR K=1 TO n-1
x((i-1)*p+j,K)=x((i-1)*p+j-1,K)
NEXT K
IF m<2 THEN m=n-2
x1=x((i-1)*p+j,m):x2=x((i-1)*p+j,n-1)
x((i-1)*p+j,m)=x2;x((i-1)*p+j,n-1)=x1
m=m-1
NEXT j
NEXT i
S1=s0*n: p=p*(n-1)
FOR i=1TO p
S=d(1,x(i,1))
FOR j=1TO n-2
s=s+d(x(i,j),x(i,j+1))
NEXT j
f(i)=s+d(x(i,j),j)
IFf(i) NEXT i m=0 FOR i=1TO p IFf(i)=s1THENm=m+1 NEXT i IF m=1GOTO 10 DIM x1(m):m1=1 FOR i=1TO p IFf(i)=s1THENx1(m1)=i:m1=m1+1 NEXT i 10:PRINF PRINT”可能的路线”;p;”条”PRINT”最佳的路线”;m;”条” IF m>1GOTO 20 PRINT”走法” PRINT”V(1)--”; FOR i=1To n-1 PRINT”V(“;x(t,i);”)--”; NEXT i PRINT “V(1)” PRINT”最短路线:”;s1:GOTO30 20:FOR i=1TO m PRINT “第”;I;”条是:” PRINT “V(1)--”; FOR j = 1TO n-1 PRINT”V(“;x(x1(i),j);”)--”; NEXT j PRINT “V(1)” NEXT i PRINT “最短路长为:”;s1 30:END