我需要实现一种算法,从预定义的可能性中选择最佳三元组(三个整数组)。详情:
有一个枚举类定义如下:
enum class myEnum
{
a6 = 0,
a10,
a14,
a18,
a119,
a123,
a127,
a131,
a135
}
这些成员可以组合成三元组
{a6,a10,a14}, {a6, a14, a18}
。只有11个可能的三元组(因为条件在这里不重要)。
我必须选择三元组,对每个三元组成员进行一些计算,并考虑其他条件选择最佳三元组。
哪些数据结构和设计最适合这11个三元组?一个三元组正在使用'因此应该从计算中排除,或者可以对每个三元组进行计算,然后将其从结果中排除(无关紧要):
struct a6
{
int value;
};
typeToChoose possibleTriples = {
{
a6, a10, a14
a6, a10, a18
a6, a14, a18
a10, a14, a18
a119, a123, a127
a119, a123, a131
a119, a127, a131
a123, a127, a131
a123, a127, a135
a123, a131, a135
a127, a131, a135
}
让我们说{a6, a10, a14}
正在使用中。现在我必须迭代
possibleTriples
计算结构字段value
的总和:
int sumOfValues = a6.value + a10.value + a18.value;
并选择最低总和的最小三倍。 {a6,a10,a14} == {a14,a10,a6}
答案 0 :(得分:1)
对此的回答只能与问题一样模糊。 通常,您从最基本的方法开始:
struct Triple {
myEnum first, second, third;
};
现在,根据您想要实现的目标,您可以添加更多抽象,通过合并封装(私有成员),某个接口来操作表示,算法,重载运算符等,从而有效地将这样的结构推广到类。