Програмиране и програмни езици Има отговори

Помощ за задача

ИП
Иван Петров
07.12.2019 · 1074 прегледа
Някой може ли да ми помогне с решаването на задачата

1 отговор

Най-добър отговор · с най-много благодарности
2
Здравей, На какъв език трябва да се реализира решението? Иначе логиката за решаване е съвсем проста: - Трябва ти едно queue (опашка, FIFO - first in, first out), в която влизат клиентите. Тук под клиент не се разбира точно 1 човек, а броя на хората, които искат да седнат на дадена маса. Идеята на FIFO е че тези, които са първи, трябват да бъдат обслужени първи. - Броят и вида на масите може да се съхранява както в масив, така и в някакъв hash-map (dictionary или по друг начин в програмните езици). Ако изберем масив - може да използваме 1 или 3 масива за пазене на масите: а) Ако целим използване на малко място и бързо действие - Един масив. С общо 20 елемента. Като от 0 до 9-ти индекс са елементите за маси с 2 места, от 10ти до 14-ти тези с 4 места и от 15 до 19 тези с 6 места). Масивът може просто да число, бит или boolean, който казва дали дадения индекс е свободен 0 (true) или е заета 1 (false); б) Ако целим малко повече яснота в кода може да използваме 3 масива, като логиката е същата. - Да речем, че искаме да пестим място и сме избрали решението с 1 масив. При влизане на клиент/и проверяваме спрямо тяхната бройка дали в масива в този диапазон от индекси имаме такъв, който е със свободно място (0). Ако е свободно ги "настаняваме" (тоест стойността на елемента в масива става 1) и махаме клиентите от опашката. Пример с псевдо код: int[] tables = [0, 0, 0, ...]; // Може да попълним масива с 20 нули в цикъл int customers_count = stdin(); // Четем броя клиенти от STDIN if (customers_count > 0 && customers_count < 3) { // Проверка с for или най- добре да изкараме логиката в друга фунцкия в която обхождаме // масива от 0 до 9 и проверява за първи свободен индекс, като му даваме стойност 1 } else if (customers_count > 2 && customers_count < 5) { // Същото само че вече са за елементите от 10 до 14 } и т.н. Ако имаш още въпроси, може да пишеш тук.
2

За да отговорите, трябва да сте влезли в профила си.

Влезте