Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Дано N целых чисел. Найдите наибольшее число, являющееся произведением трех из данных чисел.

Гасан Мурадов Ученик (132), закрыт 1 год назад
Лучший ответ
Татьяна Шеховцова Высший разум (520960) 9 лет назад
Выбрать 3 самых больших и перемножить
Jurijus ZaksasИскусственный Интеллект (445791) 9 лет назад
Пусть даны числа -20 -10 1 2 3
Логично, что самое большое число -20*-10*3=600
Но по твоему алгоритму это 1*2*3=6
Что как-то немного не совсем правильно.
Татьяна Шеховцова Высший разум (520960) Тогда то же самое по модулю + следить чтобы отрицательных было чётное кол-во (Уже лет 5 задачи подобного типа не встречались, забывается однако)
Остальные ответы
johnsilver Просветленный (22588) 9 лет назад
наибольшее число будет из произведения 3-х наибольших чисел.
сортируй, бери 3 крайних с нужной стороны
Jurijus ZaksasИскусственный Интеллект (445791) 9 лет назад
Не работает для отрицательных чисел.
johnsilver Просветленный (22588) ну таки да, но я же не должен все делать за [s]головотяпа [/s] автора вопроса
Jurijus Zaksas Искусственный Интеллект (445791) 9 лет назад
Перебрать все варианты рекуррентной функцией.
Иван Сигаев Искусственный Интеллект (154163) 9 лет назад
max=A[0]*A[1]*A[2];
for(int i=0;i < N; i++){
for(int j=1;j < N; j++){
if(j==i)continue;
for(int k=2;k < N;k++){
if(k==i)continue;
if(k==j)continue;
if(max<A[i]*A[j]*A[k])max=A[i]*A[j]*A[k];
}
}
}
Похожие вопросы