Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
мозг развивается примерно до 25-26 лет…
как выбрать из int ar[n] = {...} n-1 элементов так, чтобы произведение выбранных было максимальным
С чего вы взяли что ответ неправильный, если при произведения порождает переполнение?
и вовсе не факт, что при этом обязательно будет нужно само их произведение

Из последнего. Надо было в программе работать с json-объектами (и парсить, и сохранять). Скачал чью-то монстрообразную библиотеку (несколько тысяч строк), потестировал, столкнулся с багом и удалил, а потом написал свою на 500 строк. Да, потратил сутки. Но зато я уверен в своем классе, он не содержит лишних методов, работает максимально эффективно и оптимален для моего случая… мне с ним приятно работать.
И я не понимаю, почему здесь на хабре все так восторгаются Petr с топкодера и прочими чемпионами олимпиад по программированию.
Особенно люто я ненавидел выпускников мехмата и бывших олимпиадников.
<code>for(i = 0; i < n; ++i)
{
if(a[i] > a[max]) max = i;
if(a[i] < a[min]) min = i;
}</code>for(i = 0; i < n; ++i)
{
if(a[i] > a[max]) max = i;
else
if(a[i] < a[min]) min = i;
}min = max = 0;
for(i = 1; i < n; i += 2)
{
if(a[i] < a[i + 1])
{
if(a[i] < a[min]) min = i;
if(a[i + 1] > a[max]) max = i + 1;
}
else
{
if(a[i + 1] < a[min]) min = i + 1;
if(a[i] > a[max]) max = i;
}
}Имеется массив arr[N], и нужно выбрать M < N элементов так, чтобы их произведение было максимальным :). При этом необязательно, чтобы M = N — 1
Ненавижу бывших олимпиадников и выпускников мехмата
Первый вопрос, который возник в голове: «На*уя? Зачем?»Крайне правильная мысль, как мне кажется. Терпеть ненавижу такие высосанные из пальца задачи, ещё со времен школьных олимпиад. А умение собирать из готовых компонент рабочее решение — это не каждому дано. Особенно, если разбираешься в том, как такие компоненты работают и можешь при необходимости реализовать аналог, пускай и упрощённый. Задачи вроде Project Euler это скорее разминка для ума, нежели реальный показатель умения программировать. Самое главное, чтобы работа была сделана качественно и в срок, и приносила удовольствие.
Array.prototype.to_string = function() {
var out = '';
for (var i = 0; i < this.length; i++) {
out += this[i];
}
return out;
}
String.prototype.reverse = function() {
var i = 0;
var j = this.length - 1;
var output = [];
while (i <= j) {
var ch = this.charAt(i);
output[i] = this.charAt(j);
output[j] = ch;
++i;
--j;
}
return output.to_string();
}
alert('hello yello'.reverse())
* This source code was highlighted with Source Code Highlighter./**
* Find subset with maximal product of numbers.
*/
function max_product(num) {
var tmp = [],
negNumCounter = 0,
minNeg = 0,
minAbs = num[0];
for (var i = 0; i < num.length; i++) {
// Rule out all zeros.
if (!num[i]) {
continue;
}
if (num[i] < 0) {
// Minimal negative number.
if (num[i] < minNeg) {
minNeg = num[i];
}
negNumCounter++;
}
// Minimal absolute value.
var abs = Math.abs(num[i]);
if (abs < minAbs) { //
minAbs = abs;
}
tmp.push(num[i]);
}
var negParity = negNumCounter % 2,
result = [];
for (var i = 0; i < tmp.length; i++) {
var minValue = (!negParity && negNumCounter > 0) ? minNeg : minAbs;
if (tmp[i] == minValue) {
continue;
}
result.push(tmp[i]);
}
return result;
}
var number = [1, 2, 0, -7, -1, 4, 3, 32, 18, -2, -32];
alert(max_product(number));
* This source code was highlighted with Source Code Highlighter.Я вообще не люблю писать исполняемый код, потому что я в нём постоянно делаю ошибки, которые потом нужно искать и исправлять. Я люблю дописывать xml-ные конфиги, идущие в пакете от разработчика.
«как перевернуть строку?». Я подумал, и написал псевдокод на ядерной смеси C++, Pascal и PHP
выбрать из int ar[n] = {...} n-1 элементов так, чтобы произведение выбранных было максимальным
Стандартный программист