回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有4个数组,有2列:一列测量米,另一列测量你每米得到的钱,我想从这4个数组中得到最高的总和组合,但我有2条规则:第一条规则是总和中的每个米值必须在1到6米之间,第二条规则是,结果的米值必须等于12米。我已经编写了一段代码,从一系列4个数组中获得最大和,但我不知道如何在代码中实现这2条规则。这就是我请求你帮助的原因</p>
<p>我的4个阵列:</p>
<p>1,2,3,4,5,6是仪表值
米值下面的数字是米赚的钱</p>
<pre><code>A = [[1, 2, 3, 4, 5, 6],
[50.4, 100.8, 201.6, 403.2, 806.4, 1612.8]]
B = [[1, 2, 3, 4, 5, 6],
[40.8, 81.6, 163.2, 326.4, 652.8, 1305.6]]
C = [[1, 2, 3, 4, 5, 6],
[110, 220, 440, 880, 1760, 3520]]
D = [[1, 2, 3, 4, 5, 6],
[64, 128, 256, 512, 1024, 2048]]
</code></pre>
<p>我的代码:</p>
<pre><code>
import math
from queue import PriorityQueue
def KMaxCombinations(A, B, C, D, N, K):
# Max heap.
pq = PriorityQueue()
# Insert all the possible
# combinations in max heap.
for i in range(0,N):
for j in range(0,N):
for k in range(0,N):
for l in range(0,N):
a = A[i] + B[j] + C[k] + D[l]
pq.put((-a, a))
# Pop first N elements from
# max heap and display them.
count = 0
while (count < K):
print(pq.get()[1])
count = count + 1
# Driver method
A = [50.4, 100.8, 201.6, 403.2, 806.4, 1612.8]
B = [40.8, 81.6, 163.2, 326.4, 652.8, 1305.6]
C = [110, 220, 440, 880, 1760, 3520]
D = [64, 128, 256, 512, 1024, 2048]
N = len(A)
K = 3
# Function call
KMaxCombinations(A, B, C, D, N, K)
</code></pre>