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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составьте программу, которая вычисляет значения n-го слагаемого Q и суммы n слагаемых последовательности S (спасите) http://www.cyberforum.ru/cpp-beginners/thread688941.html
Задание на лабораторную работу: Для заданного преподавателем варианта задания составьте программу, которая вычисляет значения n-го слагаемого Q и суммы n слагаемых последовательности S. Входные данные: n – переменная целочисленного типа ( 0 < n < 10000 ), параметры последовательности a, x – переменные вещественного типа. Все входные данные вводятся с клавиатуры. Выходные данные: Q, S –...
C++ Выделение числовой константы из строки char * find-const ( ) , 1)помещает в буфер строки digit литеру буфера buf_lit, 2)из входного потока читает литеру за литерой,пока не встретит не цифру или конец файла; 3)усли счетная-цифра,то она помещается в очередную позицию буфера строки.Если это не цифра,то строка дополняется символом "\0 а литера остается в буфере buf-lit. Если буфер исчерпан,а на входе цифра,то чтение продолжается,пока... 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 *flag,wchar_t q)//проверка на пустоту списка { *flag = false; if ( stek->Count == 0 ) { *flag = true; } else *flag = false; return *flag; подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 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;
 
Текущее время: 03:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru