Я пытаюсь выяснить, как эффективно определить все числа, которые могут быть получены как линейная комбинация некоторого набора, скажем, первые несколько обильных чисел (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;}
}
Ух ты, наверное, должен был подумать об этом. Я использую C++ btw. Думаю, мне, возможно, понадобится еще раз изучить мой подход. Поскольку я чувствую, что рекурсия может быстро вырасти из-под контроля. – emschorsch
Ничего себе, я просто понял, что я неправильно понял вопрос Эйлера Эйлера, поэтому я думал, что вопрос был настолько невероятно тяжелым. Lol вопрос, как я теперь понимаю, кажется почти тривиальным. Мне нужно найти числа, которые больше не могут быть выражены как сумма двух чисел, и он не включает кратные числа, которые упрощают все. В любом случае, спасибо за вашу помощь. – emschorsch
Просто интересно, можете ли вы ссылаться на вопрос? Благодаря! – Bill