假设我们有两个数组A和B。A的大小是行数,A [i]是第i行中的框数。B是球的阵列,其中B [i]表示球上的数字。给定该球i(值B [i])将放置在从开始位置为B [i]的盒子中。我们必须找到与每个B [i]相对应的框的行和列。
因此,如果输入像A = [3,4,5,6],B = [1,3,5,2],那么输出将是[(1,1),(1,3),( 2,2),(1,2)]为B [0] = 1,则框位置将为第一行,第一列B [1] = 3,则框位置将为第一行,第三列,B [2] = 5,则框位置将为第二行,第二列,B [3] = 2,则框位置将为第一行,第二列
为了解决这个问题,我们将遵循以下步骤-len_a:= A的大小
len_b:= B的大小
对于范围在1到len_a中的我,执行A [i]:= A [i] + A [i-1]
对于范围在0到len_b之间的i,执行box_num:= B [i]
box_num:= B [i]-A [行-1]
row:=一个索引,我们可以在其中插入B [i]来保持A排序
如果行> = 1,则
除此以外,
显示一对(行+ 1,box_num)
示例
让我们看下面的实现以更好地理解-import bisect
def get_position(A, B):
len_a = len(A)
len_b = len(B)
for i in range(1, len_a):
A[i] += A[i - 1]
for i in range(len_b):
row = bisect.bisect_left(A, B[i])
if row >= 1:
box_num = B[i] - A[row - 1]
else:
box_num = B[i]
print ((row + 1, box_num))
A = [3, 4, 5, 6]
B = [1, 3, 5, 2]
get_position(A, B)
输入值[3, 4, 5, 6], [1, 3, 5, 2]
输出结果(1, 1)
(1, 3)
(2, 2)
(1, 2)