Изменения

Перейти к: навигация, поиск

Получение предыдущего объекта

33 байта добавлено, 21:45, 30 декабря 2014
Специализация алгоритма для генерации предыдущего разбиения на слагаемые
<tex> 2) </tex> Если невозможен первый случай, то найдем такое слагаемое (не последнее), которое точно больше предыдущего на 1. Обозначим его номер за <tex>j</tex>. Тогда <tex> a[j] = a[j] - 1 </tex>, а <tex> a[j + 1] = 1 + \sum_{i = j + 1}^n a[i] </tex>. А <tex> a[j + 1] </tex> будет последним слагаемым в разбиении.
Пример:
 
Случай 1.
[[Файл:Prevpart1.png|600px|left|2 < 9 / 2, значит разделим 9 на два слагаемых, 4 и 5]]
 
 
 
 
 
Случай 2.
 
[[Файл:Prevpart2.png|600px|left|1 + 2 - наибольший префикс, который можно не изменять, уменьшаем первую 3, дописываем наибольший хвост - 9 ]]
 
 
 
 
 
=== Реализация ===
Первое слагаемое находится под индексом 1.
sum +=a[i]
a.pop_back();
 
Пример:
 
Случай 1.
[[Файл:Prevpart1.png|600px|left|2 < 9 / 2, значит разделим 9 на два слагаемых, 4 и 5]]
 
 
 
 
 
Случай 2.
 
[[Файл:Prevpart2.png|600px|left|1 + 2 - наибольший префикс, который можно не изменять, уменьшаем первую 3, дописываем наибольший хвост - 9 ]]
== См. также ==
107
правок

Навигация