Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2008, 16:53   #1
koshka669
Новичок
Джуниор
 
Аватар для koshka669
 
Регистрация: 04.07.2008
Сообщений: 2
По умолчанию Пусть группа состоит из N человек. В ней каждый имеет (N/2) друзей и не больше K врагов.

Помогите!!! нужно написать программу на любом из языков программирования!!!

Пусть группа состоит из N человек. В ней каждый имеет (N/2) друзей и не больше K врагов. У одного из них есть книга, которую все хотели бы прочитать и потом обсудить с некоторыми из остальных.
Написать программу, которая разбивает людей на S групп, где будет обсуждаться книга, таким образом, чтобы вместе с каждым человеком в ту же самую группу вошло не более P его врагов.
Примечание: предполагается, что S*P>=K.

Всем, кто ответит или сможет помочь, СПАСИБО!!!!
koshka669 вне форума Ответить с цитированием
Старый 04.07.2008, 18:55   #2
terminadoor
Пользователь
 
Регистрация: 26.06.2008
Сообщений: 86
По умолчанию

Напиши поконкретнее.А то суть постановки задачи мне неясна. Какие данные надо ввести, а какие - вывести.
TerMinAdoOR
terminadoor вне форума Ответить с цитированием
Старый 04.07.2008, 20:00   #3
koshka669
Новичок
Джуниор
 
Аватар для koshka669
 
Регистрация: 04.07.2008
Сообщений: 2
По умолчанию

Надо написать программу, решающую эту задачу на любом языке программирования, у меня есть по задаче только это:
Задача может быть сформулирована в графовой постановке следующим образом: найти простой цикл в графе (т.е. без повторяющихся вершин), проходящий через все вершины графа. В общем случае не существует эффективного алгоритма решения этой задачи. Однако в данном случае задачу можно решить эффективно.
Предположим, что уже построен некоторый простой путь (x[1],x[2],...x[k]) Множество вершин, вошедших в путь, будем считать пройденными, остальные не пройденные. Возможны 3 ситуации.
1. Одна из вершин x[1],x[k] смежна одной из не пройденных еще вершин. В этом случае путь можно очевидным образом удлинить на одну вершину.
2. Ни одна из вершин x[1],x[k] не смежна одной из не пройденных еще вершин, а вершины x[1] и x[k] смежны. В этом случае понятно, что k>N/2, так как вершины x[1] и x[k] смежны N/2 вершинам. Следовательно количество не пройденных вершин не больше N/2. Следовательно любая вершина у из них смежна одной из пройденных вершин, например x[i]. Но тогда можно получить более длинный путь (у,x[i],x[i+1],...,x[k],x[1],x[2],...x[i-1]).
3. В этом случае степеней вершин нетрудно показать, что в пути (x[1],x[2],...x[k]) существует такой индекс i, что x[1] смежна x[i], а x[i-1] смежна x[k]. Следовательно, рассмотрев путь (x[i],x[i+1],...,x[k],x[i-1],x[i-2],...x[1]) мы имеем ситуацию 2., поэтому можно получить более длинный путь.
Применяя описанный выше способ начиная с пути длины 1, построим простой цикл, включающий все вершины.
koshka669 вне форума Ответить с цитированием
Старый 26.05.2011, 18:15   #4
Ksardas13
Форумчанин
 
Регистрация: 24.03.2011
Сообщений: 120
По умолчанию

UP!
Я столкнулся с той же бедой! первую часть задачи сделал!
Про вторую ничего не могу найти.
Прошу помощи!
Ksardas13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
какая база данных имеет расширение .adb студентка Софт 2 02.10.2009 12:30
Вопрос к тем, кто имеет представление о PHP, JSP, ASP, ASP.NET child_of_july Помощь студентам 0 07.06.2008 00:25
Размер имеет значение Xenofibrius Общие вопросы Delphi 3 20.04.2008 23:38
Требуется программист(группа програмистов) llFANll Фриланс 2 01.03.2007 14:30