Я должен записать программу для нахождения продукта Max трех чисел для данного массива размера N. Есть ли какой-либо эффективный алгоритм для этого? Я просто должен знать шаги алгоритма. Не алгоритмов, что я думал работы для всех тестовых сценариев. Спасибо! к вашему сведению Массив может содержать +ve,-ve, или нулевые элементы),
Учитывая массив списка = (N1, N2, N3 ...). Вы можете сделать это в 3 проходах.
Let a1 = max (|n_i|)
Let a2 = max (|n_i|) where n_i != a1
Теперь A1 * A2 является положительным, отрицательным или нулевым. Если ноль, то есть много решений; Выберите любой N_I от остальных чисел. Если A1 * A2> 0, выберите самый большой положительный номер, в противном случае наименьшее отрицательное число. Более кратко, вы можете просто сделать один пройти через остальную часть списка:
Let max_product = max (a1*a2*n_i) where n_i != a1 or a2
Сначала добавить
filterContext.HttpContext.Response.Clear();
и это в конце:
filterContext.HttpContext.Response.End();
Надеюсь, это поможет.
-121--2663128-Я бы пошел с boost:: scoped _ ptr здесь:
class A: boost::noncopyable
{
typedef boost::scoped_ptr<B> b_ptr;
b_ptr pb_;
public:
A() : pb_() {}
void calledVeryOften( /*…*/ )
{
pb_.reset( new B( params )); // old instance deallocated
// safely use *pb_ as reference to instance of B
}
};
Нет необходимости в ручном деструкторе, A
не копируется, как это должно быть в вашем оригинальном коде, не утечка памяти при копировании/назначении.
Я бы предложил переосмыслить дизайн, хотя если вам нужно очень часто перераспределять какой-то внутренний государственный объект. Ознакомьтесь с параметрами Flyweight и State узоров.
-121--2666428-Найдите три наибольших числа в массиве (n1, n2, n3) и два наименьших числа (m1, m2).
Ответ: n1 x n2 x n3 или n1 x m1 x m2