Asosiy tarkibga o‘tish

O‘rganish

Kirish
Qo‘llanma

Qo‘llanma · Dasturlash

backtracking

Masalalar tez orada

Nazariya

Backtracking (orqaga qaytish) — javobni qadamma-qadam quramiz; yo‘l noto‘g‘ri bo‘lib chiqsa, oxirgi tanlovni bekor qilib, boshqasini sinaymiz. Bu aqlli to‘liq perebor.

def subsets(nums):
    result, cur = [], []

    def go(i):
        if i == len(nums):
            result.append(cur[:])
            return
        go(i + 1)              # nums[i] ni olmaymiz
        cur.append(nums[i])    # olamiz
        go(i + 1)
        cur.pop()              # bekor qilamiz — orqaga qaytish

    go(0)
    return result

Klassik masalalar

  • Barcha qism to‘plamlar, perestanovkalar, kombinatsiyalar.
  • N ta farzin (queen), sudoku, labirintdan barcha yo‘llar.

Kesish (pruning)

Javob bo‘lishi mumkin bo‘lmagan shoxni erta to‘xtating: masalan, yig‘indi allaqachon chegaradan oshgan bo‘lsa, chuqurroq kirmang. Bu vaqtni ko‘p marta qisqartiradi.

Bu mavzu bo‘yicha masalalar tez orada qo‘shiladi.

Shu mavzu kirgan kurslar

Menyu

Ko‘rinish

Klaviatura yorliqlari

Ctrl K yoki /
Qidirish va buyruqlar
g h
Bosh sahifa
g p
Masalalar
g c
Musobaqalar
g r
Reyting
Ctrl Enter
Masala sahifasida — yechimni yuborish
?
Shu oyna