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 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据