Первое, что нужно понять, это то, что, поскольку все они равны 1, var3
является функцией var2 + var1
. Таким образом, у вас действительно есть две переменные здесь.
Вы можете грубо форсировать это, просто зацикливая var1
и var2
вслепую и сохраняя значения:
List<int[]> sets = new ArrayList<>();
for(int var1 = 0; var1 <= 100; var1 += 5) {
for(int var2 = 0; var2 <= 100; var2 += 5) {
int var3 = 100 - (var1 + var2);
if(var1 + var2 + var3 == 100 && (var1 != var2) && (var1 != var3) && (var2 != var3)) {
int[] set = new int[] { var1, var2, var3 };
sets.add(set);
}
}
}
Теперь это пронизано неэффективностью что, надеюсь, вы сможете определить и оптимизировать, но это должен быть эффективный способ сделать это. Обратите внимание, что я использовал целые числа, поэтому у нас не было странных ошибок округления с плавающей запятой. Измените ваш вывод соответственно.