Что-то я мозги сломал, никак не получается решить.
Есть некая возрастающая последовательность N(i). Нужно сгенерировать последовательность всех пар (i, j) в таком порядке, чтобы значения N(j) - N(i) возрастали.
Если это как-то помогает, N(i+1) - N(i) > N(i) - N(i - 1) для всех i.
Возрастающая последовательность, разность элементов...
-
- Уже с Приветом
- Posts: 12003
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
-
- Уже с Приветом
- Posts: 267
- Joined: 14 Jul 2005 04:28
- Location: Nsk -> College Park, MD
Re: Возрастающая последовательность, разность элементов...
N(1)...N(n) - the sequence
add (1,n) to agenda
while agenda is not empty do
remove the longest element (i,j) from agenda
output (i,j)
if i < j-1 then
add (i,j-1) to agenda
add (i+1,j) to agenda
done
это решение не требует N(i+1) - N(i) > N(i) - N(i - 1), возможно с этим условием есть более елегантное решение.
add (1,n) to agenda
while agenda is not empty do
remove the longest element (i,j) from agenda
output (i,j)
if i < j-1 then
add (i,j-1) to agenda
add (i+1,j) to agenda
done
это решение не требует N(i+1) - N(i) > N(i) - N(i - 1), возможно с этим условием есть более елегантное решение.
-
- Уже с Приветом
- Posts: 12003
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: Возрастающая последовательность, разность элементов...
N(i) бесконечная.
Т.е. надо написать генератор (i, j), у которого N(j) - N(i) возрастают (ну или не убывают)
.
Т.е. надо написать генератор (i, j), у которого N(j) - N(i) возрастают (ну или не убывают)
.
-
- Уже с Приветом
- Posts: 12003
- Joined: 08 Sep 2006 20:07
- Location: Силиконка
Re: Возрастающая последовательность, разность элементов...
Я сначала чисто интуитивно (c учётом возрастающей разности последующих элементов) попробовал что-то вроде:
упс, фигню явную написал...
упс, фигню явную написал...
-
- Уже с Приветом
- Posts: 267
- Joined: 14 Jul 2005 04:28
- Location: Nsk -> College Park, MD
Re: Возрастающая последовательность, разность элементов...
Да, я попутал маленько, вместо возрастающей написал убывающую последовательность.
Если последовательность бесконечная, то решение в общем виде потребует бесконечной памяти:
Положим N(2) - N(1) = 1.
Для любого числа M можно подобрать такое приращение шага e, что N(M+1)-N(M) < 2
В таком случае, все отрезки длиной больше 2, а их M*(M-2) не могут быть посланы на вывод, поскольку впереди может отрезок длиной 2.
Тут что-то не так, как говоорил Джон Сильвер
Если последовательность бесконечная, то решение в общем виде потребует бесконечной памяти:
Положим N(2) - N(1) = 1.
Для любого числа M можно подобрать такое приращение шага e, что N(M+1)-N(M) < 2
В таком случае, все отрезки длиной больше 2, а их M*(M-2) не могут быть посланы на вывод, поскольку впереди может отрезок длиной 2.
Тут что-то не так, как говоорил Джон Сильвер
-
- Уже с Приветом
- Posts: 605
- Joined: 14 Feb 2002 10:01
- Location: Russia
Re: Возрастающая последовательность, разность элементов...
Что значит "всех пар" ? Вот например пара (1,1) и пара (2,2), для них N(j) - N(i) = 0, как их ни расставь возрастания не получится. Или предполагается, что не все возможные паросочетания, а каждый элемент может участвовать только один раз в какой-либо паре? Или один раз слева, один раз справа? Или еще как...M. Ridcully wrote:...Есть некая возрастающая последовательность N(i). Нужно сгенерировать последовательность всех пар (i, j) в таком порядке, чтобы значения N(j) - N(i) возрастали.
T.е. у нас не любая возрастающая последовательность, а только такая, что удовлетворяет этому условию?M. Ridcully wrote:Если это как-то помогает, N(i+1) - N(i) > N(i) - N(i - 1) для всех i.