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 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址