Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.
Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin. Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Eng katta 3 raqam ko'paytmasi

+4 ovoz
284 marta ko‘rilgan
so‘radi 21 aprel, 17 abdujabbor (399 bal)
Etilik bizga n elementdan iborat massiv berilgan, manfiy va musbat sonlardan iborat bo'lgan. shu massivdagi istalgan 3 ta element kopaytmasini eng katta qiymatini topish kerak.

Time Limit: O(n)

Memory Limit: O(1)

3 Javoblar

+2 ovoz
javob berdi 21 aprel, 17 Saidolim (3,566 bal)
tahrirlandi 24 aprel, 17 Saidolim
n>=3
m1 = a1 // birinchi element 
m2 = a2 // 2 element 
for k = 3 to n 
  read m3 
  m = m1*m2*m3 
  Agar max < m max = m 
  m1 = m2 m2 = m3 
end for 

result max

UPD:

Baron aytganlaridek, ketma-ket kelganlar to`g`ri bo`lmaydi.

Algoritm bo`yicha, 3 ta eng katta musbat (m1,m2,m3) son va 2 ta eng kichik manfiy (k1,k2) son olinishi kerak.
Keyin tekshiramiz, m1*m2*m3 kattami, m1*k1*k2 kattami. 

izoh qoldirdi 22 aprel, 17 Baron (862 bal)
Lekin bu algoritm faqat ketma ket kelgan 3ta sonlar ko'paytmasini eng kattasini topadi, ixtiyoriy 3ta sonni emas...
izoh qoldirdi 24 aprel, 17 abdujabbor (399 bal)
Trivial yechim manimcha bu oka, mana bu input da nima natija qaytdi ko'ringchi:

3, 5, 1, 7, 9, 0, 9, -3, 10

sizni algoritmiz bo'yicha ketma ket kelgan 3 ta sonlar kopaytmasini eng kattasi chiqadi. lekin bu input uchun javob unaqa emas.
izoh qoldirdi 24 aprel, 17 Saidolim (3,566 bal)
qizziq, kecha Baronning izohlaridan keyin, boshqa javob yoqgandim, saqlanmi qolibdi. Hozir o`zgartirib qo`yaman
+2 ovoz
javob berdi 23 aprel, 17 Sadriddin (39 bal)
Massivni kamayish tartibida saralab olish kerak. Saralangan massivni boshidagi 3 ta sonni ko'paytmasi eng katta bo'ladi.

Yoki eng katta 3 ta elementi topish kerak , shu elementlar ko'paytmasi eng katta bo'ladi
izoh qoldirdi 23 aprel, 17 Saidolim (3,566 bal)
Saralash uchun O(n) dan ko`p vaqt ketib qoladi. Saralamasdan qilgan maqul manimcha.
izoh qoldirdi 24 aprel, 17 abdujabbor (399 bal)
Saralashni ishlatish bu yerda notog'ri. etilik mana bu input ni ko'ring:

-300, -300, 1, 10

siz etgandek Saralaydigan bo'lsak kamayish tartibida u xolda:

10, 1, -300, -300

birinchi 3 tasini oladigan bo'sak sizi algoritmiz bo'yicha -3000 chiqadi, aslida esa

-300, -300, 10

shu sonlarnign ko'paytmasi esa 90000 ga teng bo'ladi.

Shuning uchun Saralash algoritmini o'zini ishlatish bu yerda xato.
0 ovoz
javob berdi 03 may, 17 Faxriddin (823 bal)
int maxProduct(int arr[], int n)

{

    // Agar massiv elementlari soni 3 dan kichik bo'sa -1 qaytaradi

    if (n < 3)

        return -1;

    int max_product = 0;

    for (int i = 0; i < n - 2; i++)

        for (int j = i + 1; j < n - 1; j++)

            for (int k = j + 1; k < n; k++)

                max_product = max(max_product,

                        arr[i] * arr[j] * arr[k]);

    return max_product;

}

Shu kodni ishlatib ko'ring
izoh qoldirdi 03 may, 17 abdujabbor (399 bal)
Time Limit: O(n)

Memory Limit: O(1)

bu narsaga etibor bermapsiz sheklli )

Assalomu alaykum, yordam.uz saytimizga xush kelibsiz.

Bu saytda o`zingizni qiziqtirgan savollarga javob olishingiz va o`z sohangiz bo`yicha savollarga javob berishingiz mumkin.

Bizning Oilamizga a'zo bo`lganingiz uchun chuqur Minnatdorchilik bildiramiz !!!

Telegram kanal YordamUzRss

...