Я пытаюсь придумать разумный алгоритм решения этой проблемы:
Допустим, у вас есть куча шаров. Каждый шар имеет как минимум один цвет, но может быть и разноцветным. На каждом шаре также есть номер. Также есть несколько коробок, каждая только одного цвета. Цель состоит в том, чтобы максимизировать сумму чисел на шарах в коробках, и единственные правила:
Я пытаюсь придумать разумный алгоритм решения этой проблемы:
Допустим, у вас есть куча шаров. Каждый шар имеет как минимум один цвет, но может быть и разноцветным. На каждом шаре также есть номер. Также есть несколько коробок, каждая только одного цвета. Цель состоит в том, чтобы максимизировать сумму чисел на шарах в коробках, и единственные правила:
Я пытаюсь придумать разумный алгоритм решения этой проблемы:
Допустим, у вас есть куча шаров. Каждый шар имеет как минимум один цвет, но может быть и разноцветным. На каждом шаре также есть номер. Также есть несколько коробок, каждая только одного цвета. Цель состоит в том, чтобы максимизировать сумму чисел на шарах в коробках, и единственные правила:
Например, вы можете поместить сине-зеленый шар в синий или зеленый ящик, но не в красный ящик.
Я придумал несколько оптимизаций, которые очень помогают с точки зрения времени работы. Например, вы можете отсортировать шары в порядке убывания количества очков. Затем, по мере того, как вы переходите от наибольшего числа к наименьшему, если мяч имеет только один цвет и нет других шаров с более высокой точкой, которые содержат этот цвет, вы можете поместить его в это поле (и, таким образом, удалить эту коробку и этот шар из оставшиеся комбинации).
Мне просто любопытно, есть ли какой-то динамический алгоритм для этого типа задач, или это просто замаскированная задача коммивояжера. Помогло бы я, если бы я знал, что существует не более X цветов? Любая помощь приветствуется. Спасибо!
Edit - вот простой пример:
Balls: шаблон <класс T> класс Pattern { public: Pattern (...
У меня нет ошибки соответствующей функции-члена, когда я пытаюсь скомпилировать этот код на моем компиляторе mingw32
#include <iostream>
using std::cout;
template <class T>
class Pattern
{
public:
Pattern(): element(){
cout<< "default c-tor";
}
Pattern(Pattern ©): element(copy.element){
cout<< "copy c-tor";
}
Pattern& operator=(Pattern &assgn)
{
cout<<" assignment operator";
element = assgn.element;
return *this;
}
~Pattern(){
cout<<"destructor";
}
private:
T element;
};
template <class T>
Pattern<T> creator()
{
cout<< "Testing creator";
Pattern<T> pat;
return pat;
}
int main()
{
Pattern<double> pt1(creator<double>());
Pattern<double> pt2 = creator<double>();
}
Кто-нибудь, пожалуйста, скажите мне, как решить проблему.