Основы объектно-ориентированного программирования на языке C# book | Page 175
8.2 Алгоритми
40. Написати програму, яка за заданим користувачем числом N в
межах 1...2 30 знаходить кiлькiсть рiзних прямокутникiв з цiло-
чисельними довжинами сторiн, якi мають площу N .
41. Написати програму, яка за заданою користувачем квадратною
таблиця розмiру N × N (N в дiапазонi 2...20), у клiтинках якоı̈
знаходяться цифри 0-9, знаходить i виводить шлях з лiвоı̈ ни-
жньоı̈ у праву верхню клiтинку таблицi, який є послiдовнiстю
клiтинок, в якiй кожна наступна клiтинка знаходиться або без-
посередньо над, або безпосередньо справа вiд попеденьоı̈, для
якого сума цифр у клiтинках вздовж шляху є мiнiмально мо-
жливою (якщо таких шляхiв бiльше одного, програмi достатньо
знайти лише один з них). Наприклад, якщо користувач вводить
таблицю
0 0 1
1 2 1
0 0 1
то програма може вивести знайдений шлях у такому виглядi
(зiрочами вiдмiчено клiтини, що належать шляху):
* * *
*
*
При цьому сума цифр у клiтинках такого шляху є 2 i є мiнiмаль-
но можливою серед усiх шляхiв з лiвоı̈ нижньоı̈ у праву верхню
клiтинку таблицi, в яких кожна наступна клiтинка знаходиться
або безпосередньо над, або безпосередньо справа вiд попеденьоı̈.
42. Написати програму, яка визначає, чи можна отримати заданий
користувачем рядок, що складається з символiв [, ], (, ) шляхом
виконання послiдовностi таких дiй:
а) заключення порожнього або одного з вже отриманих рядкiв
у круглi, квадратнi, або фiгурнi дужки;
б) зчеплення двох вже отриманих рядкiв (наприклад, з () i []
отримується ()[]).
Програма має виводити повiдомлення Так або Нi . Наприклад,
рядок [[]()[]][] можна отримати виконанням дiй а) та б): можна
отримати () та [] за допомогою операцiı̈ а), з них за попомогою
б) можна отримати []()[], звiдки за допомогою операцiı̈ а) можна
отримати [[]()[]], а з [[]()[]] i [] можна отримати [[]()[]][] за допомо-
гою операцiı̈ б). Тому для вхiдного рядка [[]()[]][] програма має
вивести Так . Але, наприклад, для рядка (] програма має вивести
Нi .
175