计算结果不对,帮看看

要求从序列A选m个元素,从B序列选n个元素,A和B元素个数相同,但远取的m和n个元素的下标不能相同,列出这m和n个元素的和,以及对应的下标,用字典打印出来

我的逻辑是用一个二进制表示,1表示选取,0表示没有选取


def fun_(A,m,B,n):
   if len(A)!=len(B):
       return
   if m+n>len(A):
       return
   _len=len(A)
   def fun(n):
       bit_1_qty=str(bin(n)).count("1")
       whl_length=_len
       
       bit_1_=[]
       i=whl_length
       j=1
       while n!=0:
           if n-(n//2)*2==1:
               i=whl_length-j
               bit_1_.append(i)
           n=n>>1
           j+=1
       return bit_1_qty,bit_1_
 
   A_array={}
   B_array={}
 
   for i in range(2**_len-1):
       if fun(i)[0]==m:
           A_array[i]=fun(i)[1]
 
   for j in range(2**_len-1):
       if fun(j)[0]==n:
           B_array[j]=fun(j)[1]
 
   result={}
 
   for A_key in A_array.keys():
       sum_A_B=0
       bit=[]
       for A_i in A_array[A_key]:
           sum_A_B+=A[A_i]
           bit.append(A_i)
       
       for B_key in B_array.keys():
           if A_key & B_key==0:
               for B_i in B_array[B_key]:
                   bit.append(B_i)
                   sum_A_B+=B[B_i]
               result[sum_A_B]=bit
   return result
               
 
A=[2,3,-5,3,6,-2]
B=[1,-3,7,2,-1,9]
 
a=fun_(A,3,B,2)
for i,j in a.items():
   print(i,j)

你这是啥算法,算法叫什么

为什么把 fun 定义在 fun1 里面
你的算法题目呢

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^