Я пытаюсь выяснить, как эффективно вычислить все числа, которые могут быть получены в виде линейной комбинации некоторого множества, скажем, первых нескольких чисел (12,18,20,24). Проблема в том, как я сейчас хочу подойти к этому, чтобы пройти все числа a * 12 + b * 18 + c * 20 + d * 24, где общая сумма не превышает 100. Теперь я подумал о двух способах. Множественно вложенный цикл while или один цикл while, которые увеличивают различные значения на основе условия в верхней части цикла while. Моя проблема с обоими методами состоит в том, что я не знаю, сколько условных или вложенных циклов мне понадобится до времени выполнения, так как я еще не знаю, сколько разных чисел я собираюсь суммировать. Есть ли способ написать мою программу так, чтобы ее n раз для n чисел или чтобы n условий для n чисел.
Вот схема блока переключателей:
int count=1;
while(true){
if(num2<smal){
switch(count){
case 1:
a++;
break;
case 2:
b++;
break;
case 3:
c++;
break;
case 4:
d++;
break;
}
}
else {
switch(count){
case 1:
if(a!=0){
a=0;
b++;
}
else{count++;}
break;
case 2:
if(b!=0){
b=0;
c++;
count--;
}
else{count++;}
break;
case 3:
if(c!=0){
c=0;
d++;
count--;
}
else{count++;}
break;
case 4:
break;
}
}
//num is update here
if(count==4){break;}
}