Может кто-то обеспечить возможный инвариант цикла для следующего простого алгоритма:Каков возможный инвариант цикла
ввода: A[0,...,n-1]
и B[0,...,m-1]
, каждый из них может содержать повторяющиеся элементы
Выход: первая пара (I, j) такой, что A[i] == B[j]
.
Алгоритм:
for i <- 0 to n-1
for j <- 0 to m-1
if A[i] = B[j] then
return (i,j)
endif
endfor
endfor
return null
До сих пор, у меня есть только одно решение, которое может или не может работать:
S = {(i,j) | A[0,...,i-1] and B[0,...,j-1] has no common elements}
Являются ли массивы отсортированными? –
Что такое «первая пара ...» - одна с наименьшим 'i'? Самый маленький 'j'? Самый маленький 'i + j'? Существует более чем одно возможное упорядочение пар, поэтому вам нужно будет указать, что это значит, прежде чем вы сможете получить ответ ... Например, если 'A [0] == B [m-1]', который будет «первым» над «A [1] == B [1]»? – twalberg
@twalberg Инвариант петли алгоритма, показанный выше. Я думаю, что с указанным алгоритмом * первая пара * должна быть ясной :) – gongzhitaao