Ограничение Gecode "каждое значение в массиве появляется как минимум k раз"

Это Gecode C++

У меня есть значение IntVarArgs длины n, и я хочу выдвинуть ограничение, чтобы каждое значение в массиве появлялось как минимум k раз (или 0), например, массив [1, 2, 3, 1, 2, 3, 4, 4, 4] удовлетворяет этому ограничению при k = 2

что я делаю сейчас

for (int i = 0; i < n; i++)
{
    count(*this, a, a[i], IRT_GQ, k);
}  

Тем не менее, с ростом n количество ограничений растет, но я чувствую, что это может быть выражено одним ограничением. Я также думаю, что закрытие массива для себя не является оптимальным для решателя.

0 ответов

Другие вопросы по тегам