Bruteforce'ga kirish
Bruteforce yechim turli misollarda qanday ishlashini tushunish
Bruteforce - bu usul bo'lib, unda biz barcha mumkin bo'lgan variantlarni sinab ko'ramiz va eng yaxshi (to'g'ri) variantni tanlaymiz. U sodda, lekin sekin bo'lishi mumkin, shuning uchun uni faqat qidiruv maydoni (search space) yetarlicha kichik bo'lganda ishlatamiz.
Bruteforce'ni qanday qilamiz?
Keng tarqalgan patternlar:
- Ichma-ich sikllar
- O'zgaruvchilar soni kam bo'lsa va har birining diapazoni kichik bo'lsa.
- Bitmask bo'yicha sanash (enumeration)
- Subsetlar uchun: har bir mask dan gacha, qaysi elementlar kirganini tekshirish.
- Permutatsiyalar
- C++ da barcha tartiblarni sinash uchun
next_permutationdan foydalanish.
- C++ da barcha tartiblarni sinash uchun
- Backtracking / rekursiya
- Yechimni qadam-baqadam qurib, barcha imkoniyatlarni ko'rib chiqish (xohlasangiz pruning bilan).
Misol 1: Uzunligi bo'lgan submassivning maksimal yig'indisi
ta butun sonli massiv va soni berilgan. Uzunligi bo'lgan ketma-ket (contiguous) submassivning maksimal yig'indisini toping.