Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для Dilshod Komilov
40 / 41 / 13
Регистрация: 10.08.2016
Сообщений: 310

Комбинаторика. Расписание школы

20.06.2018, 12:26. Показов 1257. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый! Задача такая. Класс 11а должен учит 35 часов в недели (6 дней. Воскр. выходной ). В день максимум 5 часов. Предметы:

"Matematika"-4 часа в нед ,"Fizika"-4 часов ,"Rusi"- 2 часов, "Anglisi"-2 час , "Naqsha"-2 часа,
"Biologiya"-2 часа ,"Himiya"-2 часов , "Botanika" -2 часов, "Adabiyot"-3 часов,
"Zabon-3 часов", "Huquq"-3 часов, "TXT"-2 часов,"TDQ"- 4.

Работаю в языке C#. Создал вот такой класс:
C#
1
2
3
4
5
6
7
8
  class Class
    {
        public string Name { get; set; }
        public Dictionary<string,int> Subjects { get; set; }
        public int MaxHoursInDay { get; set; }
        public int MaxHoursInWeek { get; set; }
 
    }
Далее заполняю данные :
C#
1
2
3
4
5
6
7
8
9
    Class _class = new Class();
            _class.Name = "11 a";
            _class.MaxHoursInDay = 5;
            _class.MaxHoursInWeek = 35;
            _class.Subjects = new Dictionary<string, int>();
            _class.Subjects.Add("Matematika", 4);
            _class.Subjects.Add("Fizika", 4);
            _class.Subjects.Add("Rusi", 2);
            ...
Теперь нужно сгенерировать все возможные варианты составление расписание. Есть ли какая нибуд формула или алгоритм решение задачи?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2018, 12:26
Ответы с готовыми решениями:

Расписание на основе базы данных школы
Всем привет! Делаю базу данных школы. Застряла на расписании. Нужно сделать, чтобы учитель мог находиться только в одном классе. И у...

Создать расписание занятий для школы танцев в 1С
Здравствуйте. Мне задали задание создать расписание занятий для школы танцев в 1с. Необходимо сделать график работы преподавателей и на...

Как создать программу составления расписание для школы?
Здравствуйте, помогите пожалуйста, как создать программу составления расписание для школы. На делфи 7

8
 Аватар для Krasme
7247 / 5100 / 2151
Регистрация: 02.02.2014
Сообщений: 13,461
20.06.2018, 12:31
Цитата Сообщение от Dilshod Komilov Посмотреть сообщение
учит 35 часов в недели (6 дней. Воскр. выходной ). В день максимум 5 часов.
5 часов (максимум) на 6 дней = 30 часов максимум, еще 5 часов куда деть?
0
 Аватар для Dilshod Komilov
40 / 41 / 13
Регистрация: 10.08.2016
Сообщений: 310
20.06.2018, 14:18  [ТС]
Цитата Сообщение от Krasme Посмотреть сообщение
В день максимум 5 часов.
Вышла ошибочка . В день максимум 6 часов
0
 Аватар для Dilshod Komilov
40 / 41 / 13
Регистрация: 10.08.2016
Сообщений: 310
22.06.2018, 08:29  [ТС]
Krasme, Помоч сможете ?
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
22.06.2018, 10:49
Делаем массив размера 35
Каждому предмету ставим в соответствие определенное число.
Записываем в массив эти числа согласно количеству часов.

А теперь решаем типичную задачу поиска всех перестановок с условием что в входных данных есть повторы.

Добавлено через 6 минут
из каждой такой перестановки также генерируем еще 6 разных расписаний с условием что у нас получается что один день будет 5 часов, а все остальные - 6 часов
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
22.06.2018, 11:58
Предположу, что есть ещё какие-то ограничения. Например, нельзя все 4 математики поместить в один день.
0
 Аватар для Dilshod Komilov
40 / 41 / 13
Регистрация: 10.08.2016
Сообщений: 310
22.06.2018, 13:04  [ТС]
Я думаю мне достаточно узнать как сгенерировать все возможные варианты этих предметов в день. (То есть есть 10 пердметов. В один день 5 уроков. Сгенерировать все варианты). Помогите составит метод
0
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,886
22.06.2018, 16:54
Цитата Сообщение от Dilshod Komilov Посмотреть сообщение
Я думаю мне достаточно узнать как сгенерировать все возможные варианты этих предметов в день.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
void Main()
{
    var items = "abcd".ToCharArray();
    var len = 3;
    Permutations(items, len);
}
 
void Permutations(char[] items, int len)
{
    var a = Enumerable.Range(0, len).Reverse().ToArray();
    do
    {
        Print(a, items);
    }
    while (Next(a, items));
}
 
void Print(int[] a, char[] items)
{
    var s = new string(a.Select(x => items[x]).Reverse().ToArray());
    Console.WriteLine(s);
}
 
bool Next(int[] a, char[] items)
{
    // перебираем позиции и пробуем увеличить цифру
    for (int i = 0; i < a.Length; i++)
    {
        // увеличиваем цифру на единицу, пока не получим подходящую
        for (int j = a[i] + 1; j < items.Length; j++)
        {
            if (Used(a, i + 1, j))
                continue; // используется слева от данной позиции   
            // подходит 
            a[i] = j;
            // заполняем младшие разряды самыми маленькими неиспользованными цифрами
            for (int l = i - 1, k = 0; l >= 0; l--)
            {
                while (Used(a, i, k))
                    k++;
                a[l] = k++;
            }
            return true;
        }
    }
    // не удалось увеличить цифру ни в одной из позиций
    return false;
}
 
bool Used(int[] a, int pos, int n)
{
    for (int i = pos; i < a.Length; i++)
        if (a[i] == n)
            return true;
    return false;
}
1
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
25.06.2018, 13:18
Цитата Сообщение от Dilshod Komilov Посмотреть сообщение
Я думаю мне достаточно узнать как сгенерировать все возможные варианты этих предметов в день. (То есть есть 10 пердметов. В один день 5 уроков. Сгенерировать все варианты).
Расписание есть "существо" цельное в рамках недели. Нельзя просто взять и генерировать перестановки на каждый день независимо от других, да и если делать зависимо - это потребует, думаю, написать больше строк чем делать перестановки сразу на неделю, а потом разбивать по дням.

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Заполнить массив <урок[35]> начальными данными
ПОВТОРЯТЬ
for (i=0; i<6; i++)
  shift = 0
  for (j=0; j<6; j++)  
    if i==j
      день[j] = урок[shift]...урок[shift+4]
      shift += 5
    else
      день[j] = урок[shift]...урок[shift+5]
      shift +=6
  Напечатать расписание из массива <день[6]>
  <урок[35]> = Новая_Перестановка( <урок[35]> )
ПОКА есть новые перестановки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2018, 13:18
Помогаю со студенческими работами здесь

Нужно написать программу "расписание для школы"
Нужно написать программу на c#. Расписание в форме таблицы. Самостоятельно вводим данные (предмет, учитель, класс), а прога проверяет,...

Составить программу "расписание школы"
Скиньте программку , который строит расписание для школы если ест.

Разработка БД "Расписание для школы"
Доброго времени суток. Имеется вопрос по созданию базы данных на языке С++. Задача - разработать базу данных &quot;школьное...

По номеру школы, задаваемому в одной из ячеек, получать в другой ячейке фамилию и инициалы директора этой школы
Известны фамилии и инициалы директоров каждой из 24 школ. Оформить лист таким образом, чтобы можно было по номеру школы, задаваемому в...

Железнодорожное расписание или расписание электричек на Java в среде NetBeans
помогите пожалуйста сделать программку нужно сделать железнодорожное расписание или расписание электричек с поиском определенного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru