Основы объектно-ориентированного программирования на языке 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