Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

Представить суму всемя способами   Найти похожие ветки 

 
MBo ©   (2006-05-05 19:57) [40]

>Alx2 ©   (05.05.06 19:51) [38]
>Теперь только  количество"

Пардон, не обратил внимания. Тогда ДП значительно упрощается по сравнению с тем вариантом, о котором я думал.


 
TUser ©   (2006-05-05 19:58) [41]

У ДП и память линейная и никакого дерева. Сейчас напишу.


 
MBo ©   (2006-05-05 20:03) [42]

>TUser ©   (05.05.06 19:58) [41]
>У ДП и память линейная и никакого дерева
Я, к сожалению, рассуждал о subj "Представить суму всемя способами" без уточнения, что нужно только число способов ;)


 
TUser ©   (2006-05-05 21:12) [43]

Я, к сожалению, лоханулся. О перестановках не подумал. А если хранить варианты для каждого промежуточного решения, то получается и память совсем не линейная и скорость - соотвественно.


 
MBo ©   (2006-05-06 01:49) [44]

Сложность O(NM), O(N) памяти, где N - сумма, M - мощность набора


function CalcVarCount(const Data: array of Integer; Sum: Integer): Integer;
var
 X, i, j: Integer;
 A: array of Integer;
begin
 SetLength(A, Sum + 1);
 for i := 0 to High(Data) do begin
   X := Data[i];
   if X > Sum then
     Break;
   Inc(A[X]);
   for j := Data[0] to Sum - X do
     Inc(A[j + X], A[j]);
 end;
 Result := A[Sum]
end;


 
snikers ©   (2006-05-10 16:20) [45]


> MBo ©   (06.05.06 01:49) [44]

  Inc(A[X]);
  for j := Data[0] to Sum - X do
    Inc(A[j + X], A[j]);

А можно поподробнее???


 
MBo ©   (2006-05-10 16:29) [46]

>А можно поподробнее???
Что именно непонятно?


 
snikers ©   (2006-05-10 17:44) [47]

[44]
как работает алгоритм... вернее что он делает? почему от 0 до sum-xкакой смысл в этом? Inc(A[j + X], A[j]);


 
MBo ©   (2006-05-10 17:59) [48]

Попробуй на бумаге разобраться - возьми набор монет 2,3,5 (Data) и выпиши в ряд числа от 2 до 12-15 (массив A), а далее пошагово проходи по алгоритму, ставя против соотв. сумм точки в количестве, на которое Inc увеличивает


 
oldman ©   (2006-05-10 18:10) [49]


> MBo ©   (10.05.06 17:59) [48]
> Попробуй на бумаге разобраться - возьми набор монет 2,3,
> 5


нет уже таких монет :(((


 
snikers ©   (2006-05-10 18:15) [50]

я попробую но вот это для меня пока что недосягаемо....
Inc(A[j + X], A[j]);


 
MBo ©   (2006-05-10 18:18) [51]

> недосягаемо.... Inc(A[j + X], A[j]);
Ну уж справку по Inc бы посмотрел. Это аналог
A[j + X] := A[j + X] + A[j];


 
snikers ©   (2006-05-10 18:23) [52]

я понял носмысл самого действия не понимаю...
Обьясните, пожалуйста, каково предназначение  массива А?
плиз... оч прошу....


 
snikers ©   (2006-05-10 18:25) [53]

почему на единицу прибавляем?    Inc(A[X]);


 
MBo ©   (2006-05-10 18:44) [54]

>Обьясните, пожалуйста, каково предназначение  массива А?
Для реализации принципа динамического программирования.
Мы решаем сначала маленькие подзадачки, записывая результат в массив, а потом используем эти результаты при решении более крупных задач, которые включают в себя маленькие.
Из монет в 2 копейки мы можем составить суммы 2,4,6,8... - ставим единички в массиве А
Затем решаем для 3 копеек - ставим единичку в A[3], потом проходим со второго элемента по j, увеличивая j+3 элементы. При этом 9 элемент увеличиваем на 2, поскольку в 6 уже записано 2 способа (2+2+2 и 3+3) и так далее...


 
snikers ©   (2006-05-10 18:48) [55]

пасибо... думаю что смогу осилить... РЕСПЕКТ



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.043 c
2-1147970308
Freeek
2006-05-18 20:38
2006.06.04
поиск фрагмента текста


15-1147356788
Петр
2006-05-11 18:13
2006.06.04
Delphi


2-1148119967
tytci2007
2006-05-20 14:12
2006.06.04
Как упаковать в 6 байт дату и время


15-1147015230
Интересующийся
2006-05-07 19:20
2006.06.04
Ошибка при поиске в форуме!?


15-1147200779
SergProger
2006-05-09 22:52
2006.06.04
Атрибуты скрипта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский