yimi7286 2022-06-01 13:10 采纳率: 71.4%
浏览 71
已结题

python运行错误

应该是格式没缩进对,尝试改了没改出来

import numpy as np
def fun(n,W,w,p):
a=np.array([[0](W+1)](n+1))
for i in range(1,n+1):
for j in range(1,W+1):
if w[i-1]>j:
a[i,j]=a[i-1,j]
else:
a[i,j]=max(a[i-1,j],p[i-1]+a[i-1,j-w[i-1]])
print('max value is'+str(a[n,W]))
findDetail(p,n,a[n,W])
def findDetail(p,n,v):
a=np.array([[True](v+1)](n+1))
for i in range(0,n+1):
a[i][0]=True
for i in range(1,v+1):
a[0][i]=False
for i in range(1,n+1):
for j in range(1,v+1):
if p[i-1]>j:
a[i,j]=a[i-1,j]
else:
a[i,j]=a[i-1,j] or a[i-1,j-p[i-1]]
if a[n,v]:
i=n
result=[]
while i>=0:
if a[i,v] and not a[i-1,v]:
result.append(p[i-1])
v-=p[i-1]
if v==0:
break
i-=1
print(result)
else:
print('error')
weights=[1,2,5,6,7,9]
price=[1,6,18,22,28,36]
fun(len(weights),13,weights,price)

img

  • 写回答

1条回答 默认 最新

  • 不会长胖的斜杠 后端领域新星创作者 2022-06-01 13:38
    关注

    缩进大概是这样?

    import numpy as np
    def fun(n,W,w,p):
        a=np.array([[0](W+1)](n+1))
        for i in range(1,n+1):
            for j in range(1,W+1):
                if w[i-1]>j:
                    a[i,j]=a[i-1,j]
                else:
                    a[i,j]=max(a[i-1,j],p[i-1]+a[i-1,j-w[i-1]])
            print('max value is'+str(a[n,W]))
            findDetail(p,n,a[n,W])
    def findDetail(p,n,v):
        a=np.array([[True](v+1)](n+1))
        for i in range(0,n+1):
            a[i][0]=True
        for i in range(1,v+1):
            a[0][i]=False
        for i in range(1,n+1):
            for j in range(1,v+1):
                if p[i-1]>j:
                    a[i,j]=a[i-1,j]
                else:
                    a[i,j]=a[i-1,j] or a[i-1,j-p[i-1]]
            if a[n,v]:
                i=n
            result=[]
            while i>=0:
                if a[i,v] and not a[i-1,v]:
                    result.append(p[i-1])
                    v-=p[i-1]
                if v==0:
                    break
                    i-=1
                    print(result)
                else:
                    print('error')
    weights=[1,2,5,6,7,9]
    price=[1,6,18,22,28,36]
    fun(len(weights),13,weights,price)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 6月1日

悬赏问题

  • ¥15 怎样才能让鼠标沿着线条的中心线轨迹移动
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?
  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?