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

Нетривиальный прямой перебор - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ мне нужно удалить в программе файлы библиотеки.при компиляции под цифрой 4.я не знаю как это правильно оформить http://www.cyberforum.ru/cpp-beginners/thread590942.html
#include <iostream> #include <string> #include <vector> #include <fstream> #include <sstream> using namespace std; string _file_name = "d:\\cd.lib"; // Файл куди пишеться бібліотека
C++ Использование условий для изменения элементов массива и вывода их на экран Данный массив действительных чисел. а) До всех отрицательных элементов добавить элемент номером а1, из всех нулевых вычесть число b. Положительные элементы оставить без изменения. б) Из всех положительных элементов отнять a, из всех отрицательных отнять b, ко всем нулевых элементов добавить с. http://www.cyberforum.ru/cpp-beginners/thread590940.html
Создать новый файл C++
Как бы сохраняю данные в файл: ofstream out; cin >> s; // путь к файлу out.open ( s, ios::out ); for ( int i = 0; i < q; i++ ) { out << mas; out << endl; } out.close ();
C++ Доступ к регистрам через функции и структуры
Помогите построчно описать программу: #include<stdio.h> #include<dos.h> #include<conio.h> void main(){ union REGS rr; rr.h.ah=0x00; rr.h.al=0x02; int86(0x10,&rr,&rr);
C++ НОД, НОК И массивы в Microsoft Visual Studio 2008 http://www.cyberforum.ru/cpp-beginners/thread590899.html
№1. Найдите наибольший общий делитель и наименьшее общее кратное двух натуральных чисел, учитывая, что выполняется равенство: НОД(А, В)*НОК(А, В)=А*В. Тесты и результаты: 1) НОД(24, 15)=3; НОК(24, 15)=120. 2) НОД(14, 15)=1;НОК(14, 15)=210.
C++ Напечатать все пары чисел-близнецов Помогите пожалуйста оформить функцией #include <iostream.h> #include <conio.h> int main() { int a,k=0,i,j; for (j=2; j<=10; ++j){ if (!(j>3 && (j%2==0 || j%3==0))) { a=j; k++; } } подробнее

Показать сообщение отдельно
floke
0 / 0 / 0
Регистрация: 02.05.2012
Сообщений: 4

Нетривиальный прямой перебор - C++

30.05.2012, 00:29. Просмотров 505. Ответов 1
Метки (Все метки)

Собстевенно g++, QT.

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

Есть 7 видов гирек разной массы для весов. Веса гирек 0.3 0.6 ... 2.5(возможны любые, не суть). Требуется перебрать всевозможные варианты установки гирек на весы. Общая масса установленных гирек не должна превышать 25 кг, при этом не должна быть менее 22.5. На весах одновременно может находиться несколько гирек одного вида. Каждая гирька при этом имеет цену(условно, чтобы установить гирьку на весы, мы её сначала должны купить, причем цена зависит от последовательности покупки/установки гирьки, что то вроде скидки за каждую последующую покупку). Важна не только общая масса гирек но и последовательность установки(то есть например первой ставим гирьку массой 0.3, второй 0.6 - считаем общую цену за две гирьки, потом ставим третью гирьку - пересчитываем цену и тд). Ещё раз повторюсь, цена за гирьки постоянно меняется и зависит от предыдущих покупок. Необходимо прямым перебором найти всевозможные точки вес/цена.

Всё это дело предполагается занести в map, после чего с шагом массы 0.1 искать максимальное/минимальное значение цены для текущей массы(если такая масса вообще существует, например массы 0.2 на весах быть не может, ибо минимальная гирька весит 0.3).

Вопрос: каким образом можно решить поставленную задачу? Подвох в том, что каждый элемент может быть установлен не 1 раз, те 7 вложенных циклов не прокатит, можно попробовать рекурсию, но как тогда отслеживать варианты???

Может быть есть готовая функция/библиотека(например слышал о функции из STL, которая осуществляет прямой перебор вариантов символов из слова) для подобных задач?

Понимаю, что расчет будет долгим, но требуется именно прямой перебор.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru