Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10 1. Определить подпрограммы сложения и умножения целых чисел, представленных в системах счисления с любым основанием от 2 до 10. результаты проверять на десятичных числах. 2. Напишите программу создания n-символьной последовательности состоящей из совокупности 3 символов.... например 1,2,3 или a,b,c... в которой нет двух смежных идентичных последовательностей . для n=11 последовательность имеет... https://www.cyberforum.ru/ cpp/ thread18874.html Русификатор С++ C++
Слышал есть русификатор на С++, хотелось бы к 6 версии, но если нет то можно к любой.
C++ Объединение, пересечение, разность множеств https://www.cyberforum.ru/ cpp/ thread18787.html
Это вполне стандартный алгоритм,может есть у кого готовый? Объединение, пересечение, разность множеств. Поверка на включение одного множества в другое.
C++ С++ для чайников https://www.cyberforum.ru/ cpp/ thread18441.html
Люди помогите скачал книгу "С++ для чайников" там написано как создавать проги а на чем,не написано...Помогите...на каком текстовом редакторе лучше прогроммировать!!!
Создание электронных часов в графическом режиме Borland C++ C++
Как создать электронные часы в графическом режиме Borland C++ ?
C++ Помогите создать готовое приложение https://www.cyberforum.ru/ cpp/ thread17073.html
Возникла проблема с созданием готовой программы которую можно было бы запустить на другом компьютере на котором нет среды разработки. Помогите плиз.Программа написана на Билдере.Если брать Экзешник который получается в результате компиляции то он норм запускается и работает на моем компьютере. На другом он запускаеться, но 1-ю задачу выполняет некоректон, а при запуске 2-й вообще...
C++ Создание простенькой игры Кто нибудь раньше читал книги-игры? Ну там: если вы поварачиваете направо, то 326 параграф; если налево то 23. никто не подскажет на каком уровне можно написать такую программу что бы она сама переносила на нужные ссылки, записывала имеющиеся предметы, проигрывала сражения и т.д. https://www.cyberforum.ru/ cpp/ thread16332.html Различия описания классов в DEV и Visual C++ C++
Собственно что хотелось бы спросить скачал DEV среду, а решебник нашел по Visual. Сейчас смотрю построение перегруженного конструктора, приведён пример : class banan { class // ругается ВОТ В ЭТОМ МЕСТЕ int x ; public: int y;
C++ Двубитный порт в однобитный https://www.cyberforum.ru/ cpp/ thread15253.html
Ребята меня тут попросили помочь с заданием с контроллерами и требует двубитный порт при прмрщи цикла If преобразовать в однобитный я честно говоря что то не совсем понимаю как это представить может кто ссылочку какую нибудь кинет где почитать можно об этом? или надоумит как это притворить в жизнь? у меня вот какие соображения имеются только не знаю верны ли они что это должно выглядить на...
C++ Запись видео в файл с окна приложения https://www.cyberforum.ru/ cpp/ thread15181.html
Суть такова: есть оконное приложение, на котором отображается видео. Также в окне этого приложения есть разные органы управления (кнопки и проч.). Необходимо захватить видео, которое на окне отображается, либо все окно целиком. Возможно кто-то делал что-то подобное и знает как?:) Посоветуйте, пожалуйста)))
Подскажите тему для дипломной работы C++
Здраствуйте. Проблема вот в чем: Я учусь на системного програмиста и надо придумать тему для дипломки в кратчайшие строки. Я уже неделю думаю ну чтото фантазии нехватает, МОЖЕТ ВЫ ПОДСКАЖЕТЕ какую нибуть нормальную тему.:wall: Была идея написать утелиту под Windows на тему Теста процессора, сети, отображения апаратного содержимого но я незнаю хватит ли у меня времени и навыков. ...
C++ Компиляция dll https://www.cyberforum.ru/ cpp/ thread15005.html
Ситуация следующая. В Visual Studio 2008 написал dll на С++ для того чтобы вызывать из С#. На компьютере где стойт VS2008 все отлично работает. При переносе на другой компьютер при вызове ‘---.dll’ возникает следующая ошибка: Unhandled Exception: System.DllNotFoundException:Unable to load DLL ‘ ---.dll’ Что надо добавить в настройки проекта dll ,что бы она исполнялась на компьютерах где...
0 / 0 / 0
Регистрация: 27.12.2007
Сообщений: 4
0

Перемещение фишек - C++ - Ответ 85154

20.12.2008, 11:54. Показов 3075. Ответов 1
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
помогите мне пожалуйста, очень нужно, осталась одна задача до зачета. если что, есть вебмани.
«Фишки»

Последовательность клеток занумерована числами от 1 до N. В каждой клетке стоит либо черная, либо белая фишка. Группой назовем набор подряд стоящих фишек одного цвета, ограниченный с обеих сторон фишками другого цвета или концами последовательности. Следует переместить фишки так, чтобы они образовали не более двух групп.
Перемещение фишек описывается с помощью плана обмена, в котором используются понятия операция обмена и шаг. Операция обмена меняет местами две соседние группы фишек. Шаг состоит не более чем из K одновременно выполняемых обменов. Обмены можно совершать одновременно только тогда, когда в них участвуют разные группы. После каждого шага группы одного цвета, оказавшиеся рядом, объединяются. План обменов содержит описания шагов, выполняемых последовательно.



Напишите программу, определяющую план обменов, с помощью которого за наименьшее число шагов получается последовательность, состоящая не более чем из двух групп.
Формат входных данных
В первой строке входного файла записаны числа N и K (1 <= N <= 100000 и 1 <= K <= 10000). Исходная расстановка фишек задается в последующих строках, содержащих N чисел (0 или 1), разделенных пробелами или переводами строк. При этом 0 соответствует черной фишке, 1 - белой.
Формат выходных данных
Выходной файл должен содержать описание шагов плана, по одному шагу на строке. Описание шага начинается с числа L - количества обменов на этом шаге. Затем для каждого обмена указывается минимальный номер клетки, в которой стоит фишка, участвующая в этом обмене. Последняя строка плана должна содержать одно число 0.
Примеры
fishes.in
9 3
1 0 0 1 1 0 1 1 0
fishes.out
2 1 6
1 1
0
fishes.in
3 1
1 1 0
fishes.out
0
Примечание
Требуется найти план, содержащий наименьшее число шагов, при этом общее число обменов может быть не минимальным.




Решение:

Заметим, что количество фишек в одной группе не имеет никакого значения, т.к. за один обмен мы из 3 или 4 групп получаем 2. Получается, что нам нужно хранить количество фишек в группе только для того, чтобы правильно выводить позицию, с которой начинается группа, участвующая в обмене.
Необходимо завести массив A от одного до N (т.к. все группы могут состоять из одного символа) и хранить в нем позицию, с которой начинаются символы i-ой группы. Это сделать несложно - читаем последовательно символы последовательности и если символ не равен предыдущему, то сохраняем в A[i] позиция, на которой находиться данный символ (отсюда начинается новая группа) и увеличиваем i. Общее количество групп обозначим за M.
Теперь необходимо разработать алгоритм перестановки групп, чтобы добиться желаемого эффекта за наименьшее количество шагов. Будем выполнять действия до тех пор, пока количество групп не станет равным 2. Наша последовательность представляет собой последовательность групп вида 010101. Разобьем нашу последовательность на тройки и в каждой тройке произведем обмен первого элемента со вторым и в итоге, для данного примера, получим последовательность 101, а на следующем шаге 01.
Определим количество операций обмена, которые мы совершим на данном шаге: оно равно минимуму из K и количеством троек, на которые можно разбить нашу последовательность. Обозначим его за C. Теперь мы будем совершать операции обмена, меняя в каждой тройке первый и второй элементы. Эти обмены необходимо совершать только в последних C тройках нашей последовательности, оставляя первые Z = M - C * 3 элементов неизменными.
Займемся обменами элементов в последних C тройках. Пусть j - элемент, с которого начинается изменение последовательности, j = M - C * 3 + 1. Теперь, перебирая все i от C до 1, выводим все A[q], где q = M - i * 3 + 1 (начало первой группы в тройке), вывод такого число обозначает, что мы поменяли группу q с группой q + 1, это значит, что объединились группы q - 1 и q + 1, а также группы q и q + 2. Необходимо внести соответствующее изменение в массив: A[j] := (A[q + 2] - A[q + 1]) + A[q], где (A[q + 2] - A[q + 1]) - длина последовательности q + 1, которая теперь встала перед q. После этого необходимо увеличить j на 1. Отдельно рассматривается случай, когда q = 1: здесь вместо четырех участвуют три группы и поэтому менять следует не первую группу со второй, а вторую с третьей, т.е. предварительно увеличить j на 1.
Такой, казалось бы, сложный и запутанный способ решения задачи избавляет нас от использования списков или многократного присваивания массивов. Надеюсь, при внимательном прочтении и рисовании возможных вариантов и последовательности действий на бумаге все станет понятно.



Вернуться к обсуждению:
Перемещение фишек C++
Миниатюры
Перемещение фишек  
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2008, 11:54
Готовые ответы и решения:

Гексагональная сетка, перемещение фишек.
Есть гексагональная сетка на паинтбоксе, на ней фишки (по сути это картинки и булевы переменные,...

Рандомное перемещение фишек по квадратной матрице (клеточный автомат)
В квадратной таблице размера NxN в левом верх-нем и правом нижнем углу стоят фишки. За одну...

Определить последовательность номеров снимаемых фишек расположенных по окружности
На окружности расположено n пронумерованных фишек. Первой снимается с окружности фишка с номером k....

Перестановка фишек
Дано задание. Пешки. На горизонтальной доске состоящей из 7 ячеек расположены три белые и три...

1
20.12.2008, 11:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2008, 11:54
Помогаю со студенческими работами здесь

Одна из фишек гугла
Здравствуйте! Подскажите, пожалуйста, как мне ссылку на гугл что бы при переходе по ней открывалась...

Несколько фишек с Active Directory
Доброго времени суток. Хотелось бы узнать, существуют ли в принципе решения следующих проблем: ...

30-я опера, не хватает пары старых фишек
поставил 30-ю оперу (до этого мучал 12-ю) не хватает парочки функций: возврат на предыдущую...

Ряд фишек в Xiaomi Redmi Note 4A
В общем хочу узнать как сделать/есть ли такое/как правильно называется следующие штуки: 1)Лёгкое...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru