Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Динамическое программирование - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составьте программу, которая вычисляет значения n-го слагаемого Q и суммы n слагаемых последовательности S (спасите) http://www.cyberforum.ru/cpp-beginners/thread688941.html
Задание на лабораторную работу: Для заданного преподавателем варианта задания составьте программу, которая вычисляет значения n-го слагаемого Q и суммы n слагаемых последовательности S. Входные...
C++ Выделение числовой константы из строки char * find-const ( ) , 1)помещает в буфер строки digit литеру буфера buf_lit, 2)из входного потока читает литеру за литерой,пока не встретит не цифру или конец файла; 3)усли счетная-цифра,то она... http://www.cyberforum.ru/cpp-beginners/thread688940.html
C++ Списки и наследование
добрый день. Есть класс связанного списка class A{ A* prev; A* next; int id; //прочие члены класса
C++ Как набраться опыта?
Здравствуйте, киберфорумчане хотелось бы вам задать вопрос как набраться опыта в С++? Я думаю что если читать книги и вникать то можно только научиться кодить а вот опыта где набраться фиг знает?...
C++ Длинная арифметика(деление на 11) http://www.cyberforum.ru/cpp-beginners/thread688928.html
Здравствуйте имеется задача , в которой надо проверить делиться ли число на 11 ввод: любое число не больше чем 101000 вывод : да или нет например: ввод:4958439238923098349024 вывод: НЕТ
C++ Из инфиксной в постфиксную Привет, опять я с этим заданием. Уже глаз болит, не могу понять в чем беда. Проблема при использовании скобок. А если вводить что-то типа A+B-C то он теряет "-" bool stekNil( Stack^ stek, bool... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт С++
4670 / 2496 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
05.11.2012, 15:35
Цитата Сообщение от NeRRouZ Посмотреть сообщение
Подскажите что не так в решении.
Основная часть у Вас правильная:
Цитата Сообщение от NeRRouZ Посмотреть сообщение
C++
1
2
for (i=3; i<n; i++)
 d[i] = min( d[i-1] + a[i], min( d[i-2] + b[i-1], d[i-3] + c[i-2] ) );
а вот начало все портит:
Цитата Сообщение от NeRRouZ Посмотреть сообщение
C++
1
2
3
d[0] = a[0];
 d[1] = a[1];
 d[2] = min(a[1]+a[2], b[1]);
И Вы всегда учитываете время a[0] в итоговом результате:
Цитата Сообщение от NeRRouZ Посмотреть сообщение
C++
1
cout<<d[n-1]+d[0]<<endl;// d[0] ведь равно a[0]
А ведь может быть 1-ый человек купил билет не на себя, а сразу на 2-х, или сразу на 3-х.
Давайте так договоримся d[i] - это минимальное значение по времени, которое нужно на покупку билетов i+1 людям.
Тогда основная часть остается без изменений, а вот начало нужно переделать так:
C++
1
2
3
    d[0] = a[0];
    d[1] =min(a[1]+d[0], b[0]);
    d[2] = min(min(c[0], d[1]+a[2]), d[0]+b[1]));
вывод результата так:
C++
1
cout<<d[n-1]<<endl;
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru