Кафедра інформатики

Харківський національний педагогічний університет імені Г.С. Сковороди

Кафедра інформатики

Харківський національний педагогічний університет імені Г.С. Сковороди

Задача тижня 2011

Задача тижня 13.02.12 – 19.02.12

Zadacha_tyzhnya_khopka_zadacha_tyzhnyaZadacha_tyzhnya_khopka_2_analiz_rezultativZadacha_tyzhnya_khopka_3_reytyngZadacha_tyzhnya_khopka_4_arhiv

 

Казкова країна

 

Маленький хлопчик потрапив до казкової країни й побачив там дорогу, уздовж якої розкладено мішечки з цукерками. На кожному мішечку написана кількість цукерок. Хлопчик може взяти в кожну руку по два мішечка, що лежать поряд.

1. Створіть програму, що знайде найбільшу кількість цукерок, яку зможе взяти хлопець.

Вхідні дані

Значення N – натуральне число не більше 100 (кількість мішечків з цукерками), вводиться з клавіатури або задається як константа; 
значення Ri (i = 1, 2, …, N) – натуральні числа не більше 1000 (кількість цукерок у кожному мішечку), вводяться з клавіатури або з файлу.

Вихідні дані (виводяться на екран)

Значення W– найбільша кількість цукерок, яку зможе узяти хлопець.

2. Заповніть тестову таблицю за результатами роботи програми:

 

NRi (i = 1, 2, …, N)W
155 5 5 5 520
2204 5 6 8 9 7 2 3 5 8 9 4 1 5 2 8 2 9 7 634
31621 2 13 5 8 9 5 13 1 15 12 8 9 10 6 19
4205 8 9 12 13 15 1 5 9 11 2 15 1 12 1 9 5 8 19 21
52023 45 12 18 2 5 13 1 15 1 18 3 23 2 25 1 15 9 5 4
6155 2 21 4 9 8 6 12 16 9 15 15 1 6 3
7810 35 30 4 1 4 1 2
8105 2 10 7 20 27 12 1 4 11

 

 

Аналіз розв’язку задачі «Казкова країна»

 

 

Для зберігання кількості цукерок у N мішечках створюємо масив R з N елементів.

Спочатку треба розглянути варіант, коли 4-и елементи, що дають максимальну суму розташовані поряд. Та знайти шукану максимальну суму 4-х елементів, що попарно розташовані в масиві.

W4 = R[1]+ R[2]+ R[3]+ R[4];
для i від 2 до N – 3
початок циклу
якщо R[i] + R[i+1] + R[i+2] + R[i+3] > W4
то
W4 = R[i] + R[i+1] + R[i+2] + R[i+3];

кінець циклу

Після чого, треба розглянути варіант, коли попарно розташовані елементи в масиві, що дають шукану максимальну суму, не розташовані поряд. Для цього масив необхідно переглянути двічі. У результаті першого перегляду знайдемо максимальну суму двох поряд розташованих елементів і «візьмемо» їх, тобто додамо цю суму до шуканої суми, а в масиві відповідним елементам присвоїмо нульові значення. У результаті другого перегляду знайдемо другу пару елементів з найбільшим значенням суми і повторимо з ними ті самі дії.

Нам знадобляться допоміжні змінні: S – для зберігання поточного (потім найбільшого) значення суми пари елементів, Pos – для зберігання індексу першого елемента відповідної пари.

W = 0;
для k від 1 до 2
початок циклу
S = 0; Pos = 0;
для i від 1 до N – 1
початок циклу
якщо R[i] + R[i+1] > S
то
початок
S = R[i] + R[i+1];
Pos=i;
кінець
кінець циклу
W = W +S;
R[Pos] = 0; R[Pos+1] = 0;

кінець циклу

А тепер треба порівняти результати першого та другого варіанту, та вибрати максимальний.

якщо W4 > W
то
W = W4;

 

Таблиця за результатами роботи програми:

 

NRi (i = 1, 2, …, N)W
155 5 5 5 520
2204 5 6 8 9 7 2 3 5 8 9 4 1 5 2 8 2 9 7 634
31621 2 13 5 8 9 5 13 1 15 12 8 9 10 6 1952
4205 8 9 12 13 15 1 5 9 11 2 15 1 12 1 9 5 8 19 2168
52023 45 12 18 2 5 13 1 15 1 18 3 23 2 25 1 15 9 5 498
6155 2 21 4 9 8 6 12 16 9 15 15 1 6 358
7810 35 30 4 1 4 1 279
8105 2 10 7 20 27 12 1 4 1166

 

Журі оцінило надіслані розв’язки наступним чином:

 

 

Учасник Кількість балів
1forsh32
2Юрий Дончик4
3SERGEY2
4Макс Синкевич1
5ALEX Z1
6RomaN4