Привет, я перебираю книгу CTI C Гейл Лакманн и натолкнулся на ее вопрос
print all possible integer solutions for a^3 + b^3 = c^3 + d^3 where a,b,c,d can be integers 1 - 1000
Она дала какой-то псевдокод, который выглядит следующим образом:
Первое решение
n = 1000
for c from 1 to n
for d from 1 to n
result = c^3 + d^3
append(c,d) to list at value map[result]
for a from 1 to n
for b from 1 to n
result = a^3 + b^3
list = map.get(result)
for each pair in list
print a, b, pair
Второе решение
n = 1000
for c from 1 to n
for d from 1 to n
result = c^3 + d^3
append (c,d) to list at value map[result]
for each result, list in map
for each pair1 in list
for each pair2 in list
print pair1, pair2
Каким образом любое из этих решений получает время работы O (n ^ 2)? Даже в первом решении во втором наборе циклов for вы также перебираете пары в вашей карте, поэтому не будет ли это O (n ^ 3)?