User Tag List

Էջ 3 3-ից ԱռաջինԱռաջին 123
Ցույց են տրվում 31 համարից մինչև 33 համարի արդյունքները՝ ընդհանուր 33 հատից

Թեմա: Խնդիր խաղից

  1. #31
    Մշտական անդամ ArmSOAD-ի ավատար
    Գրանցման ամսաթիվ
    08.09.2007
    Հասցե
    Yerevan, Armenia, Armenia
    Տարիք
    36
    Գրառումներ
    353
    Բլոգի գրառումներ
    4
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Խնդիր խաղից

    Մեջբերում ars83-ի խոսքերից Նայել գրառումը
    Ինձ մոտ էլ ստացվեց առավելագույն քանակը՝ 12։ Դրանից ավել ստանալն անհնար է։ Կցում եմ perl լեզվով (C/C++ –ով երկար կստացվեր) գրածս ծրագիրը, որը գտնում է դեղին վանդակների առավելագույն քանակը (իսկ որ այդպիսի ներկում գոյություն ունի, երևում է ArmSOAD-ի գրառումից)։

    ArmSOAD, դու այս խնդիրը ի՞նչ ալգորիթմով ես լուծել և, արդյո՞ք ծրագիր ես գրել լուծելու համար։ Եթե դժվար չի, գրիր ալգորիթմը (այս բաժնում, կամ նամակով), ինձ շատ հետաքրքիր է։ Եթե քեզ հետաքրքրի, ես էլ կարող եմ իմ օգտագործած ալգորիթմը նկարագրել։
    Չե ոչ մի ցրագրից չեմ օգտվել: Ալգորիթմ էլ առանձնապես չեի մտածել: Ուղղակի մի քանի բան փորձեցի, հասկացա, որ անկյունագծերով դասավորելը ամենա հարմարն է: Իսկ քայլերս արդեն գրել եմ: Բայց կուզենաի քո ալգորիթմին ծանոթանալ:

  2. #32
    Պատվավոր անդամ ars83-ի ավատար
    Գրանցման ամսաթիվ
    14.06.2008
    Գրառումներ
    2,966
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Խնդիր խաղից

    Մեջբերում ArmSOAD-ի խոսքերից Նայել գրառումը
    Չե ոչ մի ցրագրից չեմ օգտվել: Ալգորիթմ էլ առանձնապես չեի մտածել: Ուղղակի մի քանի բան փորձեցի, հասկացա, որ անկյունագծերով դասավորելը ամենա հարմարն է: Իսկ քայլերս արդեն գրել եմ: Բայց կուզենաի քո ալգորիթմին ծանոթանալ:
    Երևի ավելի ճիշտ կլիներ ասել դատողություններ, քան ալգորիթմ...

    1. Տախտակի բոլոր հնարավոր ներկումները (նշանակություն չունի, թե ներկման որ քայլին են դրանք ստացվել) բաժանենք դասերի ըստ նրանցում դեղին վանդակների քանակի՝ Y[0], Y[1], ..., Y[21], որտեղ Y[N] ներկումների այն դասն է, որոնցում կա ճիշտ i հատ դեղին վանդակ։ Պարզ է, որ N–ը չի գերազանցում 21–ը, քանի որ անկյունների վանդակները հնարավոր չէ դեղին գույնով ներկել (մի քիչ ավելի ուշադիր ուսումնասիրությունը ցույց է տալիս, որ N-ը չի կարող գերազանցել նաև 18-ը բայց դա էական չի)։

    2. Սկզբում ունենք որևէ ներկում Y[0] դասից։ Պարզ է, որ Y[i] դասի որևէ ներկում ունենալիս այդ պահին մեկ վանդակ ներկելով կարող է տեղի ունենալ հետևյալ դեպքերից միայն մեկը և այլ դեպք տեղի ունենալ չի կարող.
    ա. ստանանք Y[i+1] դասի ներկում (որևէ կանաչ, կարմիր, կապույտ կամ չներկված վանդակ ներկել ենք դեղինով)
    բ. ստանանք Y[i-1] դասի ներկում (դեղին վանդակներից մեկը ներկել ենք կանաչ, կարմիր կամ կապույտ գույնով)
    գ. ստանանք Y[i] դասի ներկում (դեղինից բացի այլ գույնով ներկել ենք որևէ վանդակ, որը ներկված չէր կամ ներկված էր ոչ դեղին գույնով)։
    Մեզ համար էական է միայն ա. դեպքը։

    3. Կառուցենք ծառ, որի հանգույցներից յուրաքանչյուրը պարունակում է <a[1], a[2], ..., a[N]> տեսքի բուլյան վեկտոր՝ a[i]=1, եթե i-րդ վանդակը ներկված է դեղին, a[i]=0՝ հակառակ դեպքում։ Ծառը կառուցում ենք այսպես. գագաթում տեղադրում ենք <0, 0, ..., 0> վեկտորը, որպես նրա դուստր հանգույցվեր վերցնում ենք <1, 0, ..., 0>, <0, 1, 0, ..., 0>, ...., <0, 0, ..., 0, 1> վեկտորները։ Յուրաքանչյուր A=<a[1], a[2], ..., a[N]> վեկտորը պարունակող հանգույցի դուստր հանգույցները որոշում ենք հետևյալ կերպ.
    B=<b[1], b[2], ..., b[N]>–ը A–ի դուստր հանգույցն է, եթե բավարարում է հետևյալ պայմաններին.
    ա. Եթե k–ն ամենամեծ թիվն է, որի համար A վեկտորում a[k]=1 (այսինքն՝ a[k+1]=a[k+2]=...=a[N]=0), ապա B–ն պարունակում է ճիշտ մեկ հատ 1 a[k+1], a[k+2], ..., a[N] դիրքերից որևէ մեկում,
    բ. Առաջին k բաղադրիչները A և B վեկտորների մոտ նույնն են՝ a[1]=b[1], a[2]=b[2], ..., a[k]=b[k]։

    Այսպիսով, ծառի i-րդ շերտում գտնվում են Y[i] դասի ներկումները։ Ծառը կառուցելուց հետո բավական է գտնել նրա բարձրությունը՝ այսինքն ամենամեք P թիվը, որի համար ճանապարհ կա ծառի գագաթից մինչև այդ շերտի որևէ հանգույց (այսինքն, ենթադրաբար, կա ներկումների հաջորդականություն, որը կբերի P հատ դեղին վանդակ ունեցող ներկման)։

    Մնացածը ծրագրավորման գործ է. կառուցում ես ծառը և գտնում նրա բարձրությունը։ Նոր հանգույցն ավելացնելիս ստուգվում է՝ արդյոք կարելի է այն ծնող–հանգույցից ստանալ առանց խնդրի պայմանները խախտելու, այսինքն, ներկվող դեղին վանդակի շուրջը կա՞ արդյոք առնվազն 3 ոչ դեղին վանդակ։

    Ծրագիրը տալիս է ծառի խորությունը 12։ Դա նշանակում է, որ կարող է գոյություն ունենալ 12 դեղին վանդակից ոչ ավել դեղին վանդակ պարունակող ներկում. քո ներկումը ցույց է տալիս, որ այդ առավելագույն թւվը հասանելի է։

    Հ.Գ. Իդեպ, ժողովուրդ, եթե որևէ մեկը առավելագույն դեղին վանդակների քանակը պարզող ծրագիր գրեր C կամ C++ –ով կամ Java–ով, հետաքրքիր կլիներ պարզել ծրագրերի աշխատանքի ժամանակները։ Իմը կազմում է 7.36վ, բայց ինձ թվում է այս արդյունքը կարելի է լավացնել...

  3. #33
    Մշտական անդամ ArmSOAD-ի ավատար
    Գրանցման ամսաթիվ
    08.09.2007
    Հասցե
    Yerevan, Armenia, Armenia
    Տարիք
    36
    Գրառումներ
    353
    Բլոգի գրառումներ
    4
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Re. Խնդիր խաղից

    Շնորհակալություն այս մեծ պատասխանիդ համար Փաստորեն մենք 2 ով տվեցինք թեմայի հարցի պատասխանը. դու գտար մաքսիմալ հնարավոր քանակը, ես ել ցույց տվեցի նրա գոյությունը

    Հ.Գ. Որ մի քիչ ազատ ժամանակ գտնեմ, կաշխատեմ քո մեթոդով ծրագիր գրել C++-ով:

Էջ 3 3-ից ԱռաջինԱռաջին 123

Թեմայի մասին

Այս թեման նայող անդամներ

Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)

Համանման թեմաներ

  1. Թվաբանական խնդիր
    Հեղինակ՝ NoemI, բաժին` Մաթեմատիկա
    Գրառումներ: 95
    Վերջինը: 30.04.2013, 02:51
  2. Խնդիր Firefox-ում
    Հեղինակ՝ Artgeo, բաժին` Համակարգչային ծրագրեր
    Գրառումներ: 17
    Վերջինը: 15.12.2009, 23:08
  3. Խնդիր .txt ֆայլերի հետ
    Հեղինակ՝ FC-MIKA, բաժին` Համակարգիչ
    Գրառումներ: 3
    Վերջինը: 01.11.2008, 16:16
  4. Խնդիր 1
    Հեղինակ՝ linus, բաժին` Մաթեմատիկա
    Գրառումներ: 11
    Վերջինը: 04.03.2007, 12:43

Էջանիշներ

Էջանիշներ

Ձեր իրավունքները բաժնում

  • Դուք չեք կարող նոր թեմաներ ստեղծել
  • Դուք չեք կարող պատասխանել
  • Դուք չեք կարող կցորդներ տեղադրել
  • Դուք չեք կարող խմբագրել ձեր գրառումները
  •