您的位置:首页 > 编程语言 > Python开发

Python-Project Euler 82

2014-01-22 00:15 357 查看
file=open('e:\\matrix.txt')

f=file.read()

s=f.split('\n')

s.pop()

a=[[0 for i in range(85)]for j in range(85)]

dp=[[0 for i in range(85)]for j in range(85)]

vis=[[0 for i in range(85)]for j in range(85)]

for i in range(80):

    a[i]=s[i].split(',')

for i in range(80):

    for j in range(80):

        a[i][j]=int(a[i][j])

for i in range(80):

    dp[i][0]=a[i][0]

for i in range(1,80):  #列

    print(i)

    for j in range(80): #行

        dp[j][i]=dp[j][i-1]+a[j][i]

    

    tot=0

    while tot<80:

        Min=999999999999

        Minj=-1

        for j in range(80):

            if vis[j][i]==0 and dp[j][i]<Min:

                Min=dp[j][i]

                Minj=j  #第j行

        vis[Minj][i]=1

        tot+=1

        ja=Minj-1

        jb=Minj+1

        if ja>=0 and dp[Minj][i]+a[ja][i]<dp[ja][i]:

            dp[ja][i]=dp[Minj][i]+a[ja][i]

        if jb<80 and dp[Minj][i]+a[jb][i]<dp[jb][i]:

            dp[jb][i]=dp[Minj][i]+a[jb][i]

Mins=999999999999      

for i in range(80):

    print(dp[i][79])

    if dp[i][79]<Mins:

        Mins=dp[i][79]

print(' ',Mins)

file.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: