Python-Project Euler 82





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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值