2016-09-14 2 views
0

мне нужно найти сумму 3 переменных, но каждый varible ограничен на сколько в общей сложности он может составлять:Ограничения 3 различных переменных для максимального соотношения суммы

x <= 25% of total 
y <= 90% of total 
z <= 5% of total 

Учитывая любую комбинацию x,y,z хау могу ли я найти сумму 3?

Пример ввода:

x = 30 
y = 65 
z = 5 

Х больше, чем 25% от общего объема, но восстанавливающего х также вызывает общее для уменьшения.

Догадка & check Я могу придумать 23.4ish для X, но я не уверен, как это реализовать.

Это может быть скорее математический вопрос, но мне нужно программное решение.

PS: Язык, на котором мне нужно реализовать это, похож на C, но вы можете показать решение на любом языке или просто объяснить шаги.

+1

Каков требуемый ответ для данного примера? –

+0

@PaulR Я думаю, что 23.4 что-то, хотя я не на 100%, это даже правильно ... Возможно, я полностью пойду на это неправильно ... – NSjonas

+0

Если вы уменьшите x, то вы не сможете увеличить y, так как y меньше на 90% от общего числа. –

ответ

1
while (true) 
{ 
    double sum = x + y + z; 
    if (x <= 0.25*sum && y <= 0.9*sum && z <= 0.05*sum) 
     break; 

    if (x > 0.25*sum) 
    { 
     // solve x = 0.25 * (x + y + z) for x 
     // and update sum 
     x = 0.25 * (y+z)/0.75; 
     sum = x + y + z; 
    } 

//TODO: same for y and z 

} 

Это в первой стадии снижения x к 23.333. Но тогда z находится выше своих пределов и уменьшается на следующем шаге.

+0

. Я не знаю, почему это так запутывает меня (вероятно, потому, что это странное требование), но это, похоже, работает. благодаря – NSjonas

Смежные вопросы