рдпрд╛рдВрдбреЗрдХреНрд╕ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп

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


рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдПрдХ рдордирдорд╛рдирд╛ рдЗрдирдкреБрдЯ рд╕рд░рдгреА рд╕реЗ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдХреА рд░рд╛рд╢рд┐ 10 рд╣реИред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдХрд╛рд░реНрдп рд╕рд░рд▓ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдФрд░ рдХреНрд░рдордмрджреНрдз рд▓рд┐рдЦреЗрдВред

рдпрд╛ рдЖрдк рдПрдХ рдмрд╛рдЗрдирд░реА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рдВрдмрд╛рдИ рдПрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ 2 ^ n рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рд▓реЗрддрд╛ рд╣реИред

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

рдХрджрдо 1


a) рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдпреЛрдЧ <10ред
рддрд░реНрдХ рд╕рд░рд▓ рд╣реИ, рд╕рдо (рд╡реА) <10, рдлрд┐рд░ рд╕рдо (рд╡реА) -рд╡реА [i] <рдпреЛрдЧ, рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдпреЛрдЧ рд╣рдореЗрд╢рд╛ 10 рд╕реЗ рдХрдо рд╣реЛрдЧрд╛ред

b) рдпрджрд┐ рдпреЛрдЧ (V) = 10 рд╣реИ, рддреЛ рдпреЛрдЧ (V) -V [i] <рдпреЛрдЧ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдХреЗрд╡рд▓ рдПрдХ v рд╣реЛрдЧрд╛ ред

рдХрджрдо реи


рд╣рдо рд╡реЗрдХреНрдЯрд░ рд╕реЗ рд╕рднреА рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рд░рдгреА [13, 10, 20, 13, 13, 18, 2, 9, 5, 8, 8, 9, 2, 1, 8, 16, 4, 15, 2, 2, 2, 1, 5 рдХреЛ рд▓реЗрдВред , рел, рел]ред

рдпрд╣ рддреБрд░рдВрдд рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рджреЗрдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдореВрд▓реНрдп> 10 рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ:

[1, 1, 2, 2, 2, 2, 2, 4, 5, 5, 5, 5, 5, 8, 8, 8, 9, 9, 10, 13, 13, 15, 16, 18, 20 ]

рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ 10 рд╕реЗ рдЕрдзрд┐рдХ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
v => [1, 1, 2, 2, 2, 2, 2, 4, 5, 5, 5, 5, 5, 8, 8, 8, 9, 9], 10]

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рд╣рдореЗрдВ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдорд╛рди рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ V [0] + V [i] <= 10; рдЬрд╣рд╛рдБ рдореИрдВ N рдХреА рдУрд░ рд░реБрдЦ рдХрд░рддрд╛ рд╣реВрдБ; рд▓реЗрдХрд┐рди рдЕрдЧрд░ V [i] = 10 рд╣реИ, рддреЛ рд╣рдо рдкрд░рд┐рдгрд╛рдо рдореЗрдВ 10 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
v => [рез, рез, реи, реи, реи, реи, реи, рек, рел, рел, рел, рел, 8,,,,, реп, реп]

рдЪрд░рдг 3


рдкрд╣рд▓реЗ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рд╕рд░рдгреА рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рддрддреНрд╡ рд╣реИрдВред рдпрджрд┐ рд╣рдо рд╡реЗрдХреНрдЯрд░ рдХреЛ рдЙрдк-рд╡реИрдХреНрдЯрд░ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рддрд╛ рд╣реИ
[резрез] => реи
[реи, реи, реи, реи, реи] => резреж
[рек] => рек
[рел, рел, рел, рел] => реиреж
[8, 8, 8] => реирек
[репреп] => рез 18

рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рд╕рд╛рд░ рдРрд╕рд╛ рд╣реИ рдХрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ * рдорд╛рди> 10. рдпрд╣реА рд╣реИ, рд╣рдо рд╡реИрдХреНрдЯрд░ рдХреЛ рдХрд╛рдЯрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЙрдирдХреА рд░рд╛рд╢рд┐ 10 рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ 10 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
[резрезрез] => [резрез]
[реи, реи, реи, реи, реи] => [реи, реи, реи, реи]
[рек] => [рек]
[рел, рел, рел, рел] => [рел]
[8, 8, 8] => [,]
[репреп] => [реп]

рддреАрд╕рд░реЗ рдЪрд░рдг рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░рд╛ рд╡реЗрдХреНрдЯрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛
[рез, рез, реи, реи, реи, рек, рел, 2, реп]

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЖрдХрд╛рд░ 25 рд╕реЗ рдШрдЯрдХрд░ 9 рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ (рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛рдж рд░рдЦреЗрдВ);

рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде


рдпрд╣ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИред рд╣рдо рдорд╛рдиреЗрдВрдЧреЗ рдХрд┐ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреНрд░рдордмрджреНрдз рд╡реЗрдХреНрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдВрдпреЛрдЬрди рдЦреЛрдЬрдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред
рдХрдВрдШреА (рдЧрд┐рд░рдлреНрддрд╛рд░реА, рдпреЛрдЧ), рдЬрд╣рд╛рдВ рдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рд░рд╛рд╢рд┐ рд╣реИ, рдЧрд┐рд░рдлреНрддрд╛рд░реА рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ рдЬреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рд╕реЗ рдХреНрд░рдордмрджреНрдз рд╣реИ

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реЗрдХреНрдЯрд░ рд▓реЗрдВ:
[рез реп, резрел, -реп, рей, -резрей,-,, -резреи, резрез, -реи, -резреж, реж,-, рез-, -рез-, -резрек, -резрел, -резрез, -рем, рдФрд░ -резреи , -10, 9]

1. рд╡реЗрдХреНрдЯрд░ рддреЛрдбрд╝реЛ
рдП = рдХреЗрд╡рд▓ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп
рдмреА = рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп
рдФрд░ рдпрд╣ рднреА рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдореВрд▓реНрдп = реж рд╣реИрдВ

2. рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ
рд╡реИрдХреНрдЯрд░ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ (рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЖрд░реЛрд╣реА, рдЛрдгрд╛рддреНрдордХ рдЕрд╡рд░реЛрд╣реА)

рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ (STEP 1)

3. рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХрд╛ рд╕рддреНрдпрд╛рдкрди
рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рдХрдВрдШреА (B, 10)

3. рдирдХрд╛рд░рд╛рддреНрдордХ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░реЗрдВ
рд╕рднреА рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдмрдирд╛рдПрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдмрдВрдз рдХреЗ рд╕рд╛рде:

(рддрддреНрд╡реЛрдВ рдХреЗ рдпреЛрдЧ modulo) <(рд╕рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХрд╛ рдпреЛрдЧ) + 10
рд╣рдо рдирдП рд╕рдВрджрд░реНрдн рд░рдХрдо рдХреЗ рд▓рд┐рдП рд╕рдВрдпреЛрдЬрди рдкрд╛рддреЗ рд╣реИрдВ (рддрддреНрд╡реЛрдВ рдХреЗ рдпреЛрдЧ + 10)

4. рд╕рдорд╛рдирддрд╛ реж
рдпрджрд┐ рд╕реНрд░реЛрдд рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдорд╛рди 0 рд╣реИ, рддреЛ рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрдпреЛрдЬрди + 0 рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ;

рдРрд╕реА рд╕реАрдорд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдФрд╕рддрди, рдЬрдм 28 рдФрд░ 1000 рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдорд╛рдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдордп рдХрд╛ рд▓рд╛рдн рд▓рдЧрднрдЧ 42% рд╣реИ

рдирд░реНрд╡рд╕ рди рджрд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВред рдиреИрддрд┐рдХ рдкреАрдбрд╝рд╛ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИред
function combine(arr, etalon = 10) { //--------------------------------------------// //------------- helpers --------------------// //    // Create binnary array function createBin(length) { let bin = []; for (let i = 0; i < length; i++) { bin[i] = false; } return bin; } //   1 //Binnary add 1 bit function binAddBit(bin, i = 0) { if (i >= bin.length) { return null; } if (bin[i] == false) { bin[i] = true; return bin; } else { bin[i] = false; i++; return binAddBit(bin, i); } } function iniq(arr) { let result = []; let object = {}; arr.forEach(vector => { value = vector.sort(function(a, b) { return a - b }); key = value.join(','); object[key] = value; }); for (var key in object) { result.push(object[key]); } return result; } //   // : //       //       //       function _combine(arr, sum = 10) { let result = []; //   if (arr[0] > sum) return []; if (arr[0] == sum) return [ [sum] ]; //1.   let $aKey = {}; let $a = []; let $sum = 0; //    $aKey[arr[0]] = arr[0]; $a.push(arr[0]); $sum += arr[0]; let $eqSum = false; for (let i = 1; i < arr.length; i++) { if ((arr[i] + arr[0]) <= sum) { //-----------------------------// // count*element < sum $aKey[arr[i]] = $aKey[arr[i]] != undefined ? $aKey[arr[i]] += arr[i] : arr[i]; if ($aKey[arr[i]] < sum) { $a.push(arr[i]); $sum += arr[i]; } //-----------------------------// //-----------------------------// // count*element = sum if ($aKey[arr[i]] === sum) { let $res = []; for (let j = 0; j < (sum / arr[i]); j++) { $res.push(arr[i]); } result.push($res); } //-----------------------------// } if (arr[i] == sum) { $eqSum = true; } } if ($eqSum) { result.push([sum]); } if ($sum < sum) return result; if ($sum == sum) { result.push($a); return result; } //   let bin = createBin($a.length); while (change = binAddBit(bin)) { let $sum = 0; let $comb = []; for (let i = 0; i < change.length; i++) { if (change[i] == false) continue; $sum += $a[i]; if ($sum > sum) break; // exit in accumulate $comb.push($a[i]); if ($sum == sum) { result.push($comb); } } } return result; } //------------- helpers --------------------// //--------------------------------------------// let result = []; //         //   -   let zero = false; //       let posetive = []; let negative = []; let sumPosetive = 0; arr.forEach(element => { if (element === 0) { zero = true; } if (element < 0) { negative.push(element); } if (element > 0) { posetive.push(element); sumPosetive += element; } }); //   ( ) posetive.sort(function(a, b) { return a - b }); negative.sort(function(a, b) { return b - a }); //       ,  //       if (sumPosetive < etalon) return []; //       if (sumPosetive == etalon) { result.push(posetive); if (zero) { let _clone = posetive.slice(); _clone.push(0); result.push(_clone); } return result; } //      ; result = result.concat(_combine(posetive, etalon)); // SUPPLE -          combinPosetiveLim negative = negative.filter(function(value) { return -value <= (sumPosetive + etalon); }); //    (  ) let bin = createBin(negative.length); //   while (changeBin = binAddBit(bin)) { let sum = etalon; let vector = []; //      for (let i = 0; i < changeBin.length; i++) { if (changeBin[i] == false) continue; sum -= negative[i]; vector.push(negative[i]); } if (sum > (sumPosetive + etalon)) continue; let lines = _combine(posetive, sum); lines.forEach(value => { result.push(vector.concat(value)); }); } //    0 if (zero) { result.forEach(item => { let _clone = item.slice(); _clone.push(0); result.push(_clone); }); } result = iniq(result); return result; } 

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


All Articles