|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.03.2023, 23:53 | #1 |
Регистрация: 20.03.2023
Сообщений: 4
|
Выведите минимально возможную общую длину всех нитей
Помогите пожалуйста написать код на с++: У нас есть таблица, на которой по одной прямой расположены гвозди. Любые два гвоздя мы можем соединить нитью. Необходимо связать некоторые пары гвоздей нитями так, чтобы к каждому гвоздю была привязана хотя бы одна нить, и общая длина нитей была минимальной.
Ввод: В первой строке дано натуральное число n (2 <= n <= 100). Во второй строке находятся n различных целых чисел a[i] (0 <= a[i] <= 10000), которые указывают координаты гвоздей на прямой. Вывод: Выведите минимально возможную общую длину всех нитей. Например: 7 3 2 1 4 5 7 9 Ответ: 5 Или 6 1 2 4 7 9 10 Ответ: 5 |
21.03.2023, 09:10 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
жадный алгоритм. каждый раз соединяем два гвоздя между которыми самое короткое расстояние.
программа — запись алгоритма на языке понятном транслятору
|
21.03.2023, 11:49 | #3 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
А задание всё? Просто, если гвозди на одной прямой, то
минимальная длина нити = максимальная координата - минимальная координата. Т.е. есть самый правый и самый левый гвозди. Последовательно связав каждые соседние гвозди, мы получим цепочку от крайнего к крайнему без наложений - это и есть минимальная длина нити. |
21.03.2023, 11:52 | #4 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
|
21.03.2023, 12:50 | #5 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Вот только это не сходится с ответом в первом примере
А вот на второй картинке правильный ответ. Длина нити как раз 5 - жадный алгоритм |
21.03.2023, 12:58 | #6 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Вернее жадный алгоритм создаст вот такие связи
|
21.03.2023, 15:56 | #7 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
macomics, а, ну да, туплю. Тогда так
0. L = 0 1. Отсортировать и поместить в односвязный список 2. Если n > 5 то п.3 иначе п.6 3. L = L + [1]-[0] + [n-1]-[n-2] 4. Удалить [1], [2], [n-1] и [n-2]. n = n-4 5. Переход на п. 2 6. Разобрать оставшиеся варианты для n = 2, 3, 4 или 5 - добавлено Неее! Фигня. Не правильно Последний раз редактировалось Sibedir; 21.03.2023 в 16:07. |
21.03.2023, 16:20 | #8 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Тут скорее нужен массив с флагами привязки
1) Ввели данные о позиции гвоздей в массив 2) Создали массив привязок заполненный FALSE 3) Проходим по массиву позиций пропуская элементы, у которых в массиве привязок TRUE 3.1) Запомнили индекс привязки равный -1 (флаг не найден) 3.2) Проходим по всему массиву позиций 3.2.1) Если индекс равен -1 или длина от текущего элемента до элемента выбранного внешним циклом меньше чем до элемента с индексом, тогда запоминаем новый индекс элемента 3.3) Помечаем в массиве привязок индекс цикла и выбранный индекс как TRUE 3.4) Добавляем длину веревки |
21.03.2023, 16:26 | #9 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Аааа, во как
Связать все гвозди по порядку и, пока можно убрать какую-нибудь связь, убираем самую длинную. Проверка на возможность разрыва связи состоит в том, что связь можно убрать, если она между гвоздями, которые оба есть в других связях. |
22.03.2023, 12:23 | #10 |
Тот ещё
Старожил
Регистрация: 14.11.2007
Сообщений: 2,242
|
Linok0036,
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определить общую стоимость всех товаров | cleverson1 | Помощь студентам | 4 | 20.02.2017 20:33 |
Выведите номера всех четных элементов массива | ANTON66 | Общие вопросы Delphi | 2 | 28.11.2015 17:17 |
Выведите на экран квадраты всех нечетных чисел от 1 до 30 | xes66 | Паскаль, Turbo Pascal, PascalABC.NET | 23 | 13.12.2013 15:35 |
Многопоточность.TThread.Инициализац ия нескольких нитей. | greenisius | C++ Builder | 4 | 16.11.2013 19:49 |
как считает общую длину текста | Loki1993 | Помощь студентам | 3 | 10.04.2012 14:13 |