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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры: база данных сотрудников фирмы http://www.cyberforum.ru/cpp-beginners/thread600927.html
Добрый вечер. Помогите пожалуйста найти ошибку в программе. Вот код: #include <stdio.h> #include <conio.h> typedef struct firm { char fam; char dolzh;
C++ Задача о рюкзаке (бесконечный выбор) Работал на C#(не очень долго) теперь вот срочно на плюсах, написал как смог! Помогите отредактировать(многих нюансов не знаю). #include "Iostream" #include "stdafx.h" namespace proect_D { class Program { http://www.cyberforum.ru/cpp-beginners/thread600925.html
C++ Метод, ошибка this
#include <iostream> #include <string> #include <fstream> class SickKoala { private: std::string name; public: std::string getName();
С++ фаил, проверка на символы C++
bool prov(char str){ int a = strlen(str); bool q = false; for (int i=0;i<a;i++) if (str!=str) q=false; else q=true; return 0; cout<< str; }
C++ Написать программу вычисления величины дохода по вкладу. http://www.cyberforum.ru/cpp-beginners/thread600914.html
Написать программу вычисления величины дохода по вкладу. Процентная ставка(% годовых) и время хранения (дней) задаются во время работы программы. Для вычисления суммы процентной ставки брать 365 дней в году. Вычисление дохода по вкладу. Величина вклада (ls):2500 Срок (дней): 30 Процентная ставка (годовых): 20 Доход: 41.10ls Сумма по окончании срока вклада: 2541.1ls ...
C++ Подключиться к процессу и производить запись в процесс Здравствуйте! Работал с процессом через ДЛЛ файл на С++, инжектил в процесс, изменял и читал память, но вот как сделать это например в C++ через *.exe? Необходимо: 1. Подключиться к процессу 2. На х32-ых системах процесс скрыт, тоесть его необходимо открыть каким-либо способом, но это сейчас не очень важно, у меня 64, но все же надо будет сделать и для 32 3. Читать память по определенному... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4661 / 2487 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
15.06.2012, 19:32     Динамическое программирование
insolent, извиняюсь, что на некоторое время оставил тему - был очень занят.
Я сейчас просто опишу алгоритм (которым сам пользовался - вполне возможно есть лучше, но вряд ли).
Допустим есть:
Цитата Сообщение от insolent Посмотреть сообщение
Есть у меня массив количества единичных кирпичей в каждом ряду {6, 6, 1, 2, 1}
Я не знаю как Вы будете хранить эти данные: может воспользуетесь массивом структур, вектором, map. Не сильно важно. Главное что бы был отсортирован по невозрастанию:
6 2// значит рядов из 6-ти кирпичей 2 штуки
2 1// значит что рядов из 2-х кирпичей одна штука
1 2// значит что рядов из 1-го кирпича 2 штуки
или так:
6 6 2 1 1
Назовем такое хранилище a[]

Затем:
Цитата Сообщение от insolent Посмотреть сообщение
и набор кирпичей {(1 4), (2 6), (3 1)}
тоже не знаю как будете хранить, но назовем такое хранилище b[]. Его тоже нужно отсортировать по неубыванию: (3 1), (2 6), (1 4).
Тогда основной код будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
void func1(int len, int x, int t)
{
    if(len==0)
        func(t+1);
    for(i=x; i<X; i++)//перебираем имеющиеся кирипичи
    {
        if()//если размер очередного кирпича (y) меньше или равен оставшеся len
        {
            //убираем этот кирпич из b[]
            func1(len-y,i,t);
            //восстанавливаем этот кирпич обратно в b[]
        }
    }
}
 
 
void func(int t)// где t номер ряда единичных кирпичей, а сама функция перебирает все существующие ряды и вызывает другую функцию func1(), которая будет из пытаться заполнить с помощью существующего набора кирпичей 
{
    if(t==N)//если t равно количеству рядов
    {
        // выводим на экран "Yes" и заканчиваем программу
    }
    func1(b[t],0, t);// вызываем функцию, которая будет из пытаться заполнить с помощью существующего набора кирпичей t-ый ряд (в параметрах передаем размер ряда под номером t, номер кирпича с которого начинаем заполнять ряд, и номер ряда)
 
}
 
 
int main(){
    func(0);
    cout<<"No"<<endl;
 
    return 0;
}
 
Текущее время: 07:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru