Раздел
Въпрос

Въпрос

Последни материали

Анонимно споделянеАнонимно споделяне
Студент
Сподели нов файл на тема » Сценарии за детско тържество « в научна област » Педагогика «
Иван ГеоргиевИван Георгиев
Студент
Сподели нов файл на тема » Философия и въведение в сестринските грижи « в научна област » Медицина «
Евелин КаменоваЕвелин Каменова
Студент
Сподели нов файл на тема » Училищното дело и зараждането на педагогическата мисъл в Древен Китай « в научна област » Педагогика «

Последни въпроси

Михрибан МехмедМихрибан Мехмед
Студент
Имам нужда от помощ по дисциплина »УНГ болести« в научна област »Медицина«
Грациела ИвановаГрациела Иванова
Студент
Имам нужда от помощ по дисциплина »Екологична химия« в научна област »Екология и опазване на околната среда«
ТАТЯНА ЯНКОВАТАТЯНА ЯНКОВА
Студент
Имам нужда от помощ по дисциплина »Съвременен български език« в научна област »Български език и литература«
Тук можете да помогнете на Ваш колега. Отговорът с най-много благодарности се счита за най-добър. Важно е да си помагаме!
https://www.studentite.bg/Video-Uroci-123
Зададен от:
Иван Петров
Студент
Отговори: 1
Преглеждания: 240
07.12.2019, 16:10
Помощ за задача
Научна област: Програмиране и програмни езици
Дисциплина: Синтез и анализ на алгоритми
Висше училище: Русенски Университет - Ангел Кънчев

Някой може ли да ми помогне с решаването на задачата
Снимка (4)

Ваш колега има нужда от файл?

Можете да споделяте учебни материали директно в платформата! Така те ще бъдат полезни и за други Ваши колеги. След като споделите файл, Вие можете да поставите линк към него, като отговор на въпроса. Благодарим Ви!
Добромир Стефанов
От: Добромир Стефанов
Висше училище: Технически университет
15.12.2019, 14:02
Здравей,

На какъв език трябва да се реализира решението?
Иначе логиката за решаване е съвсем проста:
- Трябва ти едно 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)