рдЕрдВрдХ # 24: рдЖрдИрдЯреА рдкреНрд░рд╢рд┐рдХреНрд╖рдг - рдкреНрд░рдореБрдЦ рдХрдВрдкрдирд┐рдпреЛрдВ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдореБрджреНрджреЗ рдФрд░ рдЪреБрдиреМрддрд┐рдпрд╛рдВ

рдЖрдИрдЯреА рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреА рдирдИ рд░рд┐рд▓реАрдЬ рдореЗрдВ "рдмреНрд▓реВ рд╡рд┐рд╢рд╛рд▓", рдЖрдИрдмреАрдПрдо рдХреЗ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

KDPV
рдЗрд╕ рдХрдВрдкрдиреА рдореЗрдВ, рдПрдХ рд╕рдореГрджреНрдз рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЕрддреАрдд рдХреЗ рд╕рд╛рде, рд╡реЗ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рддрд╛рд░реНрдХрд┐рдХ рдХрд╛рд░реНрдп рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк, рд╣рдо рдЪрдпрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдереЗред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдЖрд╡реЗрджрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдЖрдк рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ - рди рдХреЗрд╡рд▓ рд╕рд░рд▓, рдмрд▓реНрдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рд╡рд╛рд▓


  1. рдореБрд░реНрдЧрд┐рдпреЛрдВ
    рдПрдХ рдХрд┐рд╕рд╛рди рдиреЗ рдХреБрдЫ рдореБрд░реНрдЧрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджрд┐рди рдореЗрдВ рдЪрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдмреЗрдЪ рджрд┐рдпрд╛ред рдпрд╣ рдРрд╕рд╛ рдерд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рд╢реЗрд╖ рдореБрд░реНрдЧрд┐рдпреЛрдВ рдХрд╛ рдЖрдзрд╛ рдФрд░ рдЖрдзрд╛ рдЪрд┐рдХрди рдЕрдзрд┐рдХ рдЦрд░реАрджрддрд╛ рдерд╛ред

    рдХреНрдпрд╛ рдЖрдк рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕ рджрд┐рди рдХрд┐рд╕рд╛рди рдиреЗ рдХрд┐рддрдиреЗ рдЪрд┐рдХрди рдмреЗрдЪреЗ рдереЗ рдЕрдЧрд░ рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдЪреМрдереЗ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рдПрдХ рд╣реА рдЪрд┐рдХрди рдЦрд░реАрджрд╛ рд╣реИ?

    рдЕрдиреБрд╡рд╛рдж
    рдПрдХ рджрд┐рди рдореЗрдВ, рдХрд┐рд╕рд╛рди рдиреЗ рдХрдИ рдореБрд░реНрдЧрд┐рдпреЛрдВ рдХреЛ рдЪрд╛рд░ рдЦрд░реАрджрд╛рд░реЛрдВ рдХреЛ рдмреЗрдЪ рджрд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рдЖрдзреА рдмрдЪреА рдореБрд░реНрдЧрд┐рдпреЛрдВ рдХреЛ рдЦрд░реАрджрд╛ рдФрд░ рджреВрд╕рд░реА рдЖрдзреА рдлрд┐рд▓реНрдо рдХреЛред

    рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрд╕ рджрд┐рди рдХрд┐рддрдиреЗ рдореБрд░реНрдЧрд┐рдпрд╛рдВ рдмреЗрдЪреА рдЧрдИ рдереАрдВ, рдЕрдЧрд░ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реЛ рдХрд┐ 4 рд╡реЗрдВ рдЦрд░реАрджрд╛рд░ рдиреЗ рдПрдХ рдкреВрд░рд╛ рдЪрд┐рдХрди рдЦрд░реАрджрд╛ рд╣реИ?

  2. рдЧреЛрд▓рд┐рдпрд╛рдВ рдФрд░ рд░рд┐рд╡реЙрд▓реНрд╡рд░
    рдПрдХ рд░реВрд╕реА рдЧреИрдВрдЧрд╕реНрдЯрд░ рдЖрдкрдХрд╛ рдЕрдкрд╣рд░рдг рдХрд░ рд▓реЗрддрд╛ рд╣реИред рд╡рд╣ рдПрдХ рдЦрд╛рд▓реА рдЫрд╣-рд░рд╛рдЙрдВрдб рд░рд┐рд╡реЙрд▓реНрд╡рд░ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рджреЛ рдЧреЛрд▓рд┐рдпрд╛рдВ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ рдШреБрдорд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд┐рд░ рдкрд░ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЧреЛрд▓реА рдорд╛рд░рддрд╛ рд╣реИред * рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ * рдЖрдк рдЕрднреА рднреА рдЬреАрд╡рд┐рдд рд╣реИрдВред рдлрд┐рд░ рд╡рд╣ рдЖрдкрд╕реЗ рдкреВрдЫрддрд╛ рд╣реИ, "рдХреНрдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдШреБрдорд╛рдКрдВ рдФрд░ рдЖрдЧ рд▓рдЧрд╛ рджреВрдВ рдпрд╛ рдЯреНрд░рд┐рдЧрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреАрдВрдЪ рд▓реВрдВ?" рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЧреЛрд▓реА рдорд╛рд░ рджреА рдЬрд╛рдПрдЧреА?

    рдЕрдиреБрд╡рд╛рдж
    рдЖрдкрдХреЛ рдПрдХ рд░реВрд╕реА рдбрд╛рдХреВ ( рдУрд╣, рдЗрди рд╕реНрдЯреАрд░рд┐рдпреЛрдЯрд╛рдЗрдкреНрд╕ ) рджреНрд╡рд╛рд░рд╛ рдЕрдкрд╣рд░рдг рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдиреЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ 2 рдЧреЛрд▓рд┐рдпреЛрдВ рдХреЛ рдЫрд╣-рд╢реЙрдЯ рд░рд┐рд╡рд╛рд▓реНрд╡рд░ рдореЗрдВ рдбрд╛рд▓рд╛, рдбреНрд░рдо рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЖрдкрдХреЗ рд╕рд┐рд░ рдкрд░ рдерд╛ рдФрд░ рдЯреНрд░рд┐рдЧрд░ рдЦреАрдВрдЪ рджрд┐рдпрд╛ред * рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ *ред рддреБрдо рдЕрднреА рднреА рдЬреАрд╡рд┐рдд рд╣реЛред рджрд╕реНрдпреБ рдиреЗ рдЖрдкрд╕реЗ рдкреВрдЫрд╛ - "рдХреНрдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реВрдВ рдФрд░ рдЧреЛрд▓реА рдорд╛рд░ рджреВрдВ рдпрд╛ рддреБрд░рдВрдд рдЧреЛрд▓реА рдорд╛рд░ рджреВрдВ?" рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ рдЧреЛрд▓реА рдорд╛рд░реЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреНрдпрд╛ рд╣реИ?

рдХрд╛рд░реНрдп


  1. рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕реНрдЯреИрдХ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ
    рдПрдХ рд╕реНрдЯреИрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХрд╛рд░реНрдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рд╣реИред рдХрд┐рд╕реА рднреА рд▓реВрдк рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрдмрдХрд┐..etc рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ S рдкрд░ рдирд┐рдореНрди ADT рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

    is_empty (S): рдЯреЗрд╕реНрдЯ рдХрд┐ рд╕реНрдЯреИрдХ рдЦрд╛рд▓реА рд╣реИ рдпрд╛ рдирд╣реАрдВред
    рдзрдХреНрдХрд╛ (рдПрд╕): рдвреЗрд░ рдореЗрдВ рдирдП рддрддреНрд╡ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
    рдкреЙрдк (рдПрд╕): рд╕реНрдЯреИрдХ рд╕реЗ рд╢реАрд░реНрд╖ рддрддреНрд╡ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред
    рд╢реАрд░реНрд╖ (рдПрд╕): рд╢реАрд░реНрд╖ рддрддреНрд╡ рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рдиред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреИрдХ рд╕реЗ рддрддреНрд╡ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛ рд╣реИред

    рдЙрджрд╛рд╣рд░рдг:

    рдЗрдирдкреБрдЯ: -3 <- рдЯреЙрдк
    14
    18
    -5
    30

    рдЖрдЙрдЯрдкреБрдЯ: 30 <- рд╢реАрд░реНрд╖
    18
    14
    -3
    -5

    рдЕрдиреБрд╡рд╛рдж
    рдПрдХ рд╕реНрдЯреИрдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХрд╛рд░реНрдп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рд╣реИред рдЪрдХреНрд░реАрдп рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ, рдЬреИрд╕реЗ рдХрд┐, рдЬрдмрдХрд┐ ... рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдирд┐рд╖рд┐рджреНрдз рд╣реИред рдПрд╕ рд╕реНрдЯреИрдХ рдкрд░ рдХреЗрд╡рд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдореВрд░реНрдд рдХрдорд╛рдВрдб рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ:

    is_empty (S): рдпрджрд┐ рд╕реНрдЯреИрдХ рдЦрд╛рд▓реА рд╣реИ рддреЛ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред
    push (S): рд╕реНрдЯреИрдХ рдореЗрдВ рдПрдХ рдирдпрд╛ рдЖрдЗрдЯрдо рдЬреЛрдбрд╝рддрд╛ рд╣реИред
    pop (S): рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рддрддреНрд╡ рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред
    рд╢реАрд░реНрд╖ (рдПрд╕): рд╢реАрд░реНрд╖ рддрддреНрд╡ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдЗрдЯрдо рдЙрд╕реА рд╕рдордп рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред

    рдЙрджрд╛рд╣рд░рдг:

    рдЗрдирдкреБрдЯ: -3 <- рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░
    14
    18
    -5
    30

    рдЖрдЙрдЯрдкреБрдЯ: 30 <- рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░
    18
    14
    -3
    -5

рд╢рдмреНрдж рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛
рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рд╢рдмреНрджреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдВрддрд░рд┐рдХреНрд╖-рдкреГрдердХ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рдмреНрджрдХреЛрд╢ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
{, рдЬреИрд╕реЗ, рд╕рдо, рдЧрд╛рдпрд╛, рд╕реИрдорд╕рдВрдЧ, рдореЛрдмрд╛рдЗрд▓, рдмрд░реНрдл,
рдХреНрд░реАрдо, рдЖрдЗрд╕рдХреНрд░реАрдо, рдореИрди, рдЧреЛ, рдореИрдВрдЧреЛ}

рдЗрдирдкреБрдЯ: ilike
рдЖрдЙрдЯрдкреБрдЯ: рд╣рд╛рдБ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ "рдЖрдИ рд▓рд╛рдЗрдХ" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрдирдкреБрдЯ: ilikesamsung
рдЖрдЙрдЯрдкреБрдЯ: рд╣рд╛рдБ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ "I like samsung" рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╛ "рдореБрдЭреЗ рд╕реИрдо рдЧрд╛рдпрд╛ рдкрд╕рдВрдж рд╣реИ"ред

рдЕрдиреБрд╡рд╛рдж
рдПрдХ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рджрд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд┐рд╕реА рд╢рдмреНрдж рд╕реЗ рдХрд┐рд╕реА рд╢рдмреНрдж рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рдмреНрджрдХреЛрд╖ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
{, рдЬреИрд╕реЗ, рд╕рдо, рдЧрд╛рдпрд╛, рд╕реИрдорд╕рдВрдЧ, рдореЛрдмрд╛рдЗрд▓, рдмрд░реНрдл,
рдХреНрд░реАрдо, рдЖрдЗрд╕рдХреНрд░реАрдо, рдореИрди, рдЧреЛ, рдореИрдВрдЧреЛ}

рд░реЛ: ilike
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ: рд╣рд╛рдБред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ "i like" рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдЯреНрд░рд┐рдВрдЧ: ilikesamsung
рдЖрдЙрдЯрдкреБрдЯ: рд╣рд╛рдБред рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ "i like samsung" рдпрд╛ "I like sam sung" рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЯрд╛рдЗрд▓ рд╕реНрдЯреИрдХрд┐рдВрдЧ рдЯреЙрд╡рд░
рдКрдБрдЪрд╛рдИ n рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░ рдЯреЙрд╡рд░ рдПрдХ рдЯреЙрд╡рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрдХрд╛рдИ рдКрдБрдЪрд╛рдИ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рдЯрд╛рдЗрд▓реЗрдВ рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдмрдбрд╝реА рдЯрд╛рдЗрд▓ рдЫреЛрдЯреА рдЯрд╛рдЗрд▓ рдкрд░ рдирд╣реАрдВ рд░рдЦреА рдЬрд╛рддреА рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
           [1]
        [2]
     [3]
 [4]

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдХрд╛рд░ 1, 2, ..., рдореА рдХреА рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдХрд╛рд░реНрдп рдХреА рдЧрдгрдирд╛ рдКрдБрдЪрд╛рдИ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рд░ рдЯреЙрд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЗрди рдЯрд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде рдХрд┐ рдЖрдк рдЯреЙрд╡рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдХрд╛рд░ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ k рдЯрд╛рдЗрд▓реНрд╕ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдиреЛрдЯ: рдКрдБрдЪрд╛рдИ рдХреЗ рджреЛ рдЯреЙрд╡рд░ n рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ рдпрджрд┐ рдФрд░ рдХреЗрд╡рд▓ рддрднреА рд╡рд╣рд╛рдБ рдКрдБрдЪрд╛рдИ h (1 <= h <= n) рдореМрдЬреВрдж рд╣реЛ, рдЬреИрд╕реЗ рдХрд┐ рдЯрд╛рд╡рд░реЛрдВ рдореЗрдВ рдКрдБрдЪрд╛рдИ h рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреА рдЯрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг:

рдЗрдирдкреБрдЯ: n = 3, m = 3, k = 1
рдЖрдЙрдЯрдкреБрдЯ: рез
рд╕рдВрднрд╡ рдЕрдиреБрдХреНрд░рдо: {1, 2, 3}ред
рдЗрд╕рд▓рд┐рдП рдЙрддреНрддрд░ 1 рд╣реИред

рдЗрдирдкреБрдЯ: n = 3, m = 3, k = 2
рдЖрдЙрдЯрдкреБрдЯ: 7
{, 1, 2,}, 1, 1, 3}, {1, 2, 2}, {1, 2, 3}, {1, 3, 3}, {2, 2, 3}, {2 , 3, 3}ред

рдЕрдиреБрд╡рд╛рдж
рдКрдБрдЪрд╛рдИ n рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░ рдЯреЙрд╡рд░ рдЦрдбрд╝реА рдКрдБрдЪреА рдЯрд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ n рдЯрд╛рдЗрд▓реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЦрдбрд╝реА рдЦрдбрд╝реА рд╣реЛрддреА рд╣реИ рддрд╛рдХрд┐ рдмрдбрд╝реА рдЯрд╛рдЗрд▓ рдЫреЛрдЯреА рдЯрд╛рдЗрд▓ рдкрд░ рди рдкрдбрд╝реЗред рдПрдХ рдЙрджрд╛рд╣рд░рдг:
           [1]
        [2]
     [3]
 [4]

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдХрд╛рд░ 1, 2, ..., рдореА рдХреА рдЯрд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЕрдирдВрдд рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдХрд╛рд░реНрдп рдКрдВрдЪрд╛рдИ n рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рд░ рдЯрд╛рд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЗрди рдЯрд╛рдЗрд▓реЛрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдЯреЙрд╡рд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдХрд╛рд░ рдХреА k рдЯрд╛рдЗрд▓реНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ: рдКрдБрдЪрд╛рдИ n рдХреЗ рджреЛ рдЯреЙрд╡рд░ рдХреЗрд╡рд▓ рддрднреА рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ рдпрджрд┐ рд╡рд╣рд╛рдБ рдЗрддрдиреА рдКрдБрдЪрд╛рдИ h (1 <= h <= n) рд╣реЛ рдХрд┐ рдКрдБрдЪрд╛рдИ h рдкрд░ рдЯрд╛рд╡рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреА рдЯрд╛рдЗрд▓реЗрдВ рд╣реЛрдВред

рдЙрджрд╛рд╣рд░рдг:

рдЗрдирдкреБрдЯ: n = 3, m = 3, k = 1
рдЖрдЙрдЯрдкреБрдЯ: рез
рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрдХреНрд░рдо: {рез, реи, рей}ред рдЙрддреНрддрд░ 1 рд╣реИред

рдЗрдирдкреБрдЯ: n = 3, m = 3, k = 2
рдЖрдЙрдЯрдкреБрдЯ: 7
{, 1, 2,}, 1, 1, 3}, {1, 2, 2}, {1, 2, 3}, {1, 3, 3}, {2, 2, 3}, {2 , 3, 3}ред

рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рднреАрддрд░ рдЬрд╡рд╛рдм рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдлреИрд╕рд▓рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╣реИ

рд╕рдорд╛рдзрд╛рди


  1. рдкреНрд░рд╢реНрди 1
    рдЙрддреНрддрд░: 15. рдпрд╣рд╛рдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдХреНрдпреЛрдВред

  2. рдкреНрд░рд╢реНрди реи
    рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рд╕рд╣реА рдЙрддреНрддрд░ рджрд┐рдпрд╛
    рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдбреНрд░рдо рдХреЗ рдЕрдЧрд▓реЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ рдПрдХ рдХрд╛рд░рддреВрд╕ рд╣реИ - 1/4
    рдпрджрд┐ рдЖрдк рдбреНрд░рдо рдХреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░рддреВрд╕ рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛ 2/6 = 1/3

  3. рдЯрд╛рд╕реНрдХ 1
    рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд▓реНрдк, рдбрд╛рдпрдирд╛рдорд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ:
    #include <iostream> #include <string.h> using namespace std; /* A utility function to check whether a word is present in dictionary or not. An array of strings is used for dictionary. Using array of strings for dictionary is definitely not a good idea. We have used for simplicity of the program*/ int dictionaryContains(string word) { string dictionary[] = {"mobile","samsung","sam","sung","man","mango", "icecream","and","go","i","like","ice","cream"}; int size = sizeof(dictionary)/sizeof(dictionary[0]); for (int i = 0; i < size; i++) if (dictionary[i].compare(word) == 0) return true; return false; } // Returns true if string can be segmented into space separated // words, otherwise returns false bool wordBreak(string str) { int size = str.size(); if (size == 0) return true; // Create the DP table to store results of subroblems. The value wb[i] // will be true if str[0..i-1] can be segmented into dictionary words, // otherwise false. bool wb[size+1]; memset(wb, 0, sizeof(wb)); // Initialize all values as false. for (int i=1; i<=size; i++) { // if wb[i] is false, then check if current prefix can make it true. // Current prefix is "str.substr(0, i)" if (wb[i] == false && dictionaryContains( str.substr(0, i) )) wb[i] = true; // wb[i] is true, then check for all substrings starting from // (i+1)th character and store their results. if (wb[i] == true) { // If we reached the last prefix if (i == size) return true; for (int j = i+1; j <= size; j++) { // Update wb[j] if it is false and can be updated // Note the parameter passed to dictionaryContains() is // substring starting from index 'i' and length 'ji' if (wb[j] == false && dictionaryContains( str.substr(i, ji) )) wb[j] = true; // If we reached the last character if (j == size && wb[j] == true) return true; } } } /* Uncomment these lines to print DP table "wb[]" for (int i = 1; i <= size; i++) cout << " " << wb[i]; */ // If we have tried all prefixes and none of them worked return false; } // Driver program to test above functions int main() { wordBreak("ilikesamsung")? cout <<"Yesn": cout << "Non"; wordBreak("iiiiiiii")? cout <<"Yesn": cout << "Non"; wordBreak("")? cout <<"Yesn": cout << "Non"; wordBreak("ilikelikeimangoiii")? cout <<"Yesn": cout << "Non"; wordBreak("samsungandmango")? cout <<"Yesn": cout << "Non"; wordBreak("samsungandmangok")? cout <<"Yesn": cout << "Non"; return 0; } 


  4. рдЯрд╛рд╕реНрдХ реи
    рдЬрд╛рд╡рд╛ рдореЗрдВ рдШреЛрд▓:
     import java.util.ListIterator; import java.util.Stack; class Test { // Recursive Method to insert an item x in sorted way static void sortedInsert(Stack<Integer> s, int x) { // Base case: Either stack is empty or newly inserted // item is greater than top (more than all existing) if (s.isEmpty() || x > s.peek()) { s.push(x); return; } // If top is greater, remove the top item and recur int temp = s.pop(); sortedInsert(s, x); // Put back the top item removed earlier s.push(temp); } // Method to sort stack static void sortStack(Stack<Integer> s) { // If stack is not empty if (!s.isEmpty()) { // Remove the top item int x = s.pop(); // Sort remaining stack sortStack(s); // Push the top item back in sorted stack sortedInsert(s, x); } } // Utility Method to print contents of stack static void printStack(Stack<Integer> s) { ListIterator<Integer> lt = s.listIterator(); // forwarding while(lt.hasNext()) lt.next(); // printing from top to bottom while(lt.hasPrevious()) System.out.print(lt.previous()+" "); } // Driver method public static void main(String[] args) { Stack<Integer> s = new Stack<>(); s.push(30); s.push(-5); s.push(18); s.push(14); s.push(-3); System.out.println("Stack elements before sorting: "); printStack(s); sortStack(s); System.out.println(" \n\nStack elements after sorting:"); printStack(s); } } 


  5. рдЯрд╛рд╕реНрдХ 3
    рд╕рдорд╛рдзрд╛рди рд╡рд┐рдХрд▓реНрдк:
     #include <bits/stdc++.h> using namespace std; #define N 100 int possibleWays(int n, int m, int k) { int dp[N][N]; int presum[N][N]; memset(dp, 0, sizeof dp); memset(presum, 0, sizeof presum); // Initialing 0th row to 0. for (int i = 1; i < n + 1; i++) { dp[0][i] = 0; presum[0][i] = 1; } // Initialing 0th column to 0. for (int i = 0; i < m + 1; i++) presum[i][0] = dp[i][0] = 1; // For each row from 1 to m for (int i = 1; i < m + 1; i++) { // For each column from 1 to n. for (int j = 1; j < n + 1; j++) { // Initialing dp[i][j] to presum of (i - 1, j). dp[i][j] = presum[i - 1][j]; if (j > k) { dp[i][j] -= presum[i - 1][j - k - 1]; } } // Calculating presum for each i, 1 <= i <= n. for (int j = 1; j < n + 1; j++) presum[i][j] = dp[i][j] + presum[i][j - 1]; } return dp[m][n]; } // Driver Program int main() { int n = 3, m = 3, k = 2; cout << possibleWays(n, m, k) << endl; return 0; } 


Source: https://habr.com/ru/post/hi412879/


All Articles