我这个代码是对的吗,还有编写其他代码解这个吗

img

img


下面是我的代码,还有其他的代码可以解这个问题吗,要求运算结果和这个一样


n,s,k=input().split()
d=list(map(int,input().split()))
v=list(map(int,input().split()))
#if len(d)==int(n):
    #d.remove(d[int(n)-1])
    #print(d)

for zhangz in d:
    if zhangz>100000000 or zhangz<1:
    #d.remove(d[int(n)-1])
        print(d)


list1=[]#盾
list3=[]
list4=[]
list5=[]
r1_you=0
r1_zuo=0
for j in range(eval(n)):
    p=v[j]
    r1_you=0
    r1_zuo=0
    banjing1=eval(k)
    cixu=j
    if len(d)>cixu: 
        while banjing1>=d[cixu]:
            p+=v[cixu+1]
            r1_you+=1                    
            if len(d)>cixu+1:
                banjing1-=d[cixu]
                cixu+=1
            else:
                break
    cixu2=j
    banjing2=eval(k)
    if j>0:
        if len(d)>=cixu:
            while banjing2>=d[cixu2-1]:
                p+=v[cixu2-1]
                r1_zuo+=1
                if cixu2-1>0:
                    banjing2-=d[cixu2-1]
                    cixu2-=1
                else:
                    break
    if j==eval(n)-1:#放弃最后一个节点
        p=0#
        r1_zuo=0#
    list1.append([p,r1_zuo,r1_you,j])#完成列表1
    #print(list1)
for i in range(len(list1)):
    list2=[]
    list2.append(list1[i])
    shun=1
    iii=1
    b=int(s)-1
    sum=list1[i][0]
    if int(s)!=1:
            li=i#l 英文小写L
            while b!=0 and 1+li+list1[li][2]!=int(n):
                #print('0000000000000000000')
                list0=[]
                for q in range(1+li+list1[li][2],len(list1)):
                    list0.append(q)
                list00=reversed(list0)
                for qq in list00:
                    if b==0:
                       break          #break continue结束下面的 
                    if (1+li+list1[li][2]+list1[qq][1]==qq):#同一个li 更大的q更好
                        list2.append(list1[qq])
                        #print('77777777')
                        shun+=1                      
                        b-=1
                        li=qq
                        sum+=list1[qq][0]
                        break                        
                    if qq==list0[0]:
                        #print("99999")
                        for oo in range(li+1,len(list1)):      
                            if 1+li+list1[li][2]+list1[oo][1]==oo+iii:
                                list2.append(list1[oo])
                                #print("222222",list1[oo])
                                shun+=1                      
                                b-=1
                                li=oo                                
                                sum+=list1[oo][0]
                                for zzz in range(iii):                                
                                    sum=sum-v[oo-list1[oo][1]+zzz]                                    
                                iii=0                                
                                break
                        iii+=1
                        #print(iii)                                                   
    list2.insert(0,shun)
    list2.insert(1,sum)
    list3.append(list2)
    list5.append(sum)
    #print(sum)    
    #print(list2)
max1=max(list5)
for zhangshuangrui3 in range(len(list3)):
    if max1==list3[zhangshuangrui3][1]:
        list4.append(list3[zhangshuangrui3][0])       
min1 = min(list4)
a = ""
#list9=[]
for zhangshuangrui5 in range(len(list3)):
 #   list9.append(zhangshuangrui5)
  #  list99=reversed(list9)
#for zhangshuangrui5 in list99:    
    if max1 == list3[zhangshuangrui5][1] and min1 == list3[zhangshuangrui5][0]:
        print(list3[zhangshuangrui5][0])
        for ii in range(list3[zhangshuangrui5][0]):
            a =a +  str(list3[zhangshuangrui5][ii + 2][3] + 1) + " ";

        break
a = a.strip(' ');
print(a)

你可以用测试用例来测试一下,你的程序是否正确。