Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/163: Рейтинг темы: голосов - 163, средняя оценка - 4.61
 Аватар для MihaniX
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4

Задача на динамику

30.03.2014, 15:41. Показов 31658. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу на динамическое программирование.

В дощечке в один ряд вбиты гвоздики. Любые два гвоздика можно соединить ниточкой. Требуется соединить некоторые пары гвоздиков ниточками так, чтобы к каждому гвоздику была привязана хотя бы одна ниточка, а суммарная длина всех ниточек была минимальна.

Формат входных данных
В первой строке входных данных записано число N — количество гвоздиков (2<=N<=100). В следующей строке заданы N чисел — координаты всех гвоздиков (неотрицательные целые числа, не превосходящие 10000).

Формат выходных данных
Выведите единственное число — минимальную суммарную длину всех ниточек.

Задали на кружке, решить не получается
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2014, 15:41
Ответы с готовыми решениями:

задача на динамику
Условие: Узник пытается бежать из замка, который состоит из N×M квадратных комнат, расположенных в виде прямоугольника NxM. Между любыми...

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

Задача на динамику
Здравствуйте форумчане, недавно попалась такая задача на e-olimp: Я не могу понять как решить эту задачу динамическим...

14
 Аватар для MihaniX
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
06.04.2014, 17:04  [ТС]
апп
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
07.04.2014, 21:41
Оптимизация нулевая, но считает, вроде, правильно. Проверьте.
На входе предполагается упорядоченный набор координат
Python
1
2
3
4
5
6
7
8
9
def maxl (i):
    if i > n-3:
        return 0
    return x[i+1] - x[i] + max (maxl (i+2), maxl (i+3));
 
n= input()
x= input()
m= max( maxl(1),maxl (2))
print x[-1] - x[0] - m
1
 Аватар для MihaniX
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
08.04.2014, 18:53  [ТС]
Не работает
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
08.04.2014, 21:03
Цитата Сообщение от MihaniX Посмотреть сообщение
Не работает
Что конкретно не работает?
Bash
1
2
3
4
$ python nailes.py 
6
[0,1,4,10,12,20]
14
1
 Аватар для MihaniX
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
11.04.2014, 20:54  [ТС]
Тестовая система пишет что слишком долго работает программа...
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
11.04.2014, 23:36
Лучший ответ Сообщение было отмечено MihaniX как решение

Решение

Действительно, если гвоздей больше 60, время просто зашкаливает.
Немного оптимизировал, сохраняя в списке уже посчитанные варианты.
Теперь случайных 100 гвоздей считает быстро.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
 
def maxl (i):
    if i > n-3:
        return 0
    if m[i] == 0:
        m[i]= x[i+1] - x[i] + max (maxl (i+2), maxl (i+3));
    return m[i]
 
n=100
x= sorted ([random.randrange(1000) for i in range (n)])
 
m= [0 for i in range (n)]
print x[-1] - x[0] - max( maxl(1),maxl (2))
1
 Аватар для MihaniX
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
13.04.2014, 21:32  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
def maxl (i):
    if i > n-3:
        return 0
    if m[i] == 0:
        m[i]= x[i+1] - x[i] + max (maxl (i+2), maxl (i+3));
    return m[i]
 
n=int(input())
x= list(map(int, input().split()))
 
m= [0 for i in range (n)]
print (x[-1] - x[0] - max( maxl(1),maxl (2)))
Вот такой код отправил. Правильные только первый и последний ответы... Может с тестовой системой что-то не так?
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
14.04.2014, 13:14
Цитата Сообщение от MihaniX Посмотреть сообщение
x= list(map(int, input().split()))
Входной список нужно отсортировать по возрастанию.
Если не пройдет, то хорошо бы найти хотя бы один набор данных, дающий сбой.
Визуально ошибки я не вижу.
1
 Аватар для MihaniX
140 / 50 / 2
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
14.04.2014, 13:55  [ТС]
Да, я про это забыл. Все, задача принята. Огромное спасибо!!!
0
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
15.05.2021, 16:43
Можете прислать, что у вас получилось?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
15.05.2021, 17:08
irthgr, ты дату видел?
1
 Аватар для irthgr
24 / 21 / 2
Регистрация: 15.05.2021
Сообщений: 57
15.05.2021, 17:51
только щас понял, но мне очень нужно! Что делать?
0
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
15.05.2021, 19:59
Почитать про функцию sort и добавить ее в нужное место в последнем коде.
0
0 / 0 / 0
Регистрация: 30.06.2021
Сообщений: 1
30.06.2021, 11:33
вот код
Python
1
2
3
4
5
6
7
8
9
10
11
12
def maxl (i):
    if i > n-3:
        return 0
    if m[i] == 0:
        m[i]= x[i+1] - x[i] + max (maxl (i+2), maxl (i+3));
    return m[i]
 
n=int(input())
x= list(map(int, input().split()))
x=sorted(x)
m= [0 for i in range (n)]
print (x[-1] - x[0] - max( maxl(1),maxl (2)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2021, 11:33
Помогаю со студенческими работами здесь

Задача на динамику
На задачу набросал какой-то код, но все варианты он не перебирает. Можете подать какую-нибудь идею, как сделать задачу? #include...

Задача на динамику с codeforce'a
Всем привет! Уже неделю не могу разобраться в решении задачи с codeforce'a. Собственно сама задача. А вот её разбор Есть несколько...

Задача на динамику Зайчик
http://acmp.ru/?main=task&amp;id_task=11 var kk,x,i,k,n:longint; d:array of int64; procedure rec(x:longint); var i:longint; ...

Задача на динамику цен
Даны значения динамики цены товара на aliexpress за неделю. Вывести день недели и цену товара в рублях и в долларах с 2-мя знаками после...

Задача на динамику про шайбу
Шайба, пущенная вверх по наклонной плоскости с углом наклона 45, со временем останавливается и соскальзывает вниз. Время спуска в 2 раза...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru