Форум программистов, компьютерный форум, киберфорум
Наши страницы

таблица знакомств - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод кода из Паскаля на C++ http://www.cyberforum.ru/cpp-beginners/thread194101.html
обясните несколько строчек из паскаля, или перевидите их в с++ j1,er числа, i1 char вроде строки val(i1,j1,er); writeln(''); readln; write(i,' ');
C++ Наследование Тёмного времени суток! Столкнулся с проблемой, основной смысл которой заложен ниже class Parent { void F() = 0; } class Child: protected Parent { void F() {} http://www.cyberforum.ru/cpp-beginners/thread194096.html
Цикл сортировки. C++
Доброго времени суток. Такая вот у меня проблема. Предположим у меня есть два массива: {1, 2, 2, 1, 3, 3, 2, 1, 0, 0} {1, 0, 1, 2, 0, 1, 2, 3, 2, 3} как мне их упорядочить чтобы получить в итоге:...
C++ Сортировка массива [C++]
Доброго времени суток, уважаемые. Не получается сделать сортировку массива, а именно: необходимо сделать сортировку каждого из 3х столбцов в порядке убывания элементов. Метод сортировки неважен....
C++ Потоки вывода http://www.cyberforum.ru/cpp-beginners/thread194077.html
Даже не знаю как правильно сформулировать, но хотел сделать примерно следующее и вошел в ступор. Как создать класс, который смог бы привязаться к потокам cout/clog/cerr по выбору пользователя? То...
C++ Библиотека libzip Я так и не смог разобраться - можно ли с использованием данной библиотеки запаковывать в один архив файлы с разным сжатием? Нет ли ссылок на примеры кода использующего работу с атрибутами файлов?... подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт С++
4673 / 2499 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.11.2010, 08:49
Вариант:
Для решения этой задачи потребуется int mas[N] - будем его использовать в качестве очереди, и int mas1[N] - для установки номера группы (всего групп две: 1 и 2). Изначально всем элементам mas1[i] делаем значения 0.
Заносим в очередь номер 0 (первого человека). mas1[0]=1.
Затем цикл while()
- берем из очереди очередной номер человека. Проходим по таблице знакомств в соответствующей строке. Если A[i][j]==1, то смотрим на mas1[j]. Если mas1[j]==0, то делаем mas1[j]=2 (если mas1[i]=1) или mas1[j]=1 (если mas1[i]=2) и заносим j в очередь. Если mas1[i]==2 и mas1[j]==2 или mas1[i]==1 и mas1[j]==1, то выходим из цикла (в этом случаем разбить на 2 группы нельзя).
Если очередь закончилась и мы досрочно не вышли из цикла, то разбить на 2 группы можно.

Добавлено через 6 минут
У меня алгоритм не совсем полный (если будут существовать две или более изолированные группы), то мы таким алгоритмом просмотрим только одну изолированную группу. Нужно добавить рассмотренный алгоритм для всех изолированных групп. Но это не так и сложно.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru