csharp
Можешь коротко объяснить принцип? Для себя. А то прочитав задание не понял, как это должно работать.
MupoTBopec
Необходимо добавить условие, которое будет говорить, что сумма двух собираемых вещей(если мы собираем, например карандаши и блокноты), должна быть больше чем кол-во оставшейся вещи(получается, шоколада). В противном случае, получится, что будет максимально отрабатывать один оператор ветвления, а остальные будут работать уже по тому кол-ву, что осталось.
MupoTBopec
Попробую на примере. Мы вводим 4 4 4(4к, 4б, 4ш). Если не включать доп. условие, о котором я пишу выше, то получится, что будет работать только 1 оператор ветвления. Вот результат: 4 4 4 - изначально 3 3 4 - 1 подарок 2 2 4 - 2 подарок 1 1 4 - 3 подарок 0 0 4 - 4 подарок и на этом всё. 4 шоколадки так и останутся. А теперь мы добавим условие, чтобы сумма собираемых была больше кол-ву оставшейся.
MupoTBopec
4 4 4 - изначально 3 3 4 - 1 подарок 2 2 4 - 2 подарок. Здесь проверяестся 2+2 = 4, но оно не больше чем 4 шоколадки. значит собираем другой подарок 2 1 3 - 3 подарок. Теперь также 2+1 = 3, оно не больше чем 3 шоколадки. значит собираем снова другой 1 1 2 - 4 подарок. аналогичная ситуация 1 0 1 - 5 подарок 0 0 0 - 6 подарок И в итоге, мы получаем 6 подарков. То самое макс. кол-во, о котором говорилось.
MupoTBopec
Я надеюсь, более менее понятно стало. Если ты, конечно, именно об этом просил)
csharp
А для чего нам это условие в принципе? И откуда оно вытекает?
Answers & Comments
#include "iostream"
using namespace std;
int main(){
int a, b, c;
int x = 0, y = 0, z = 0;
cin >> a >> b >> c;
int amount = a + b + c;
while(amount > 0){
if(b != 0 && c != 0 && a < b + c){
x += 1;
b -= 1; c -= 1;
}
if(a != 0 && c != 0 && b < a + c){
y += 1;
a -= 1; c -= 1;
}
if(a != 0 && b != 0 && c < a + b){
z += 1;
a -= 1; b -= 1;
}
amount -= 2;
}
cout << x << " " << y << " " << z << endl;
return 0;
}
4 4 4 - изначально
3 3 4 - 1 подарок
2 2 4 - 2 подарок
1 1 4 - 3 подарок
0 0 4 - 4 подарок
и на этом всё. 4 шоколадки так и останутся. А теперь мы добавим условие, чтобы сумма собираемых была больше кол-ву оставшейся.
3 3 4 - 1 подарок
2 2 4 - 2 подарок. Здесь проверяестся 2+2 = 4, но оно не больше чем 4 шоколадки. значит собираем другой подарок
2 1 3 - 3 подарок. Теперь также 2+1 = 3, оно не больше чем 3 шоколадки. значит собираем снова другой
1 1 2 - 4 подарок. аналогичная ситуация
1 0 1 - 5 подарок
0 0 0 - 6 подарок
И в итоге, мы получаем 6 подарков. То самое макс. кол-во, о котором говорилось.