Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
105 / 7 / 1
Регистрация: 27.04.2015
Сообщений: 251

Подскажите как в принципе решаются такие задачи на Python ?

16.03.2021, 13:49. Показов 1258. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день.
Племяннице задали в институте задачу, просит помощи но не её не мое решение преподавателя не устроило.
Подскажите, как в принципе решается нечто подобное, уверен что это какой-то существующий алгоритм.
Задача: Представьте, что вы профессиональный грабитель, планирующий обчистить дома вдоль дороги. В каждом доме хранится некоторое имущество ценностью nums_i денег.
Единственное ограничение, мешающее вам ограбить каждый из них, заключается в том, что к соседним домам подключена система безопасности, и она автоматически свяжется с полицией, если два соседних дома будут взломаны в одну и ту же ночь.
Вам дан список nums, хранящий информацию о ценности каждого дома. Определите максимальную сумму денег, которую вы можете ограбить сегодня вечером без предупреждения полиции.
Sample Input:
9,6,5,3,2,0,4,7,8,1
Sample Output:
28

Моя попытка решения:
Python
1
2
3
4
5
6
7
8
9
10
11
12
price = [9,6,5,3,2,0,4,7,8,1]
profit01 = 0
profit02 = 0
 
for i in range(0, len(price) - 1, 2):
    profit01 += price[i]
    profit01 += price[i + 1]
 
if profit01 > profit02:
   print("грабим четные дома " + str (profit01))
else:
   print("грабим нечетные дома " + str (profit02))
Преподу не понравилось
Её вариант тоже не понравился
Python
1
2
3
4
5
6
7
8
9
10
11
class Solution:
    def rob(self, nums: list) -> int:
        k = 0
        result = 0
        for i in nums:
            k = k + 2
            if result < i + nums[k]:
                result = i + nums[k]
            else:
                k = k - 1
        return result
Думаю он хочет реализации конкретного алгоритма, но вот какого ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2021, 13:49
Ответы с готовыми решениями:

как решаются такие задачи на Python
Задача: Представьте, что вы профессиональный грабитель, планирующий обчистить дома вдоль дороги. В каждом доме хранится некоторое имущество...

Как решаются такие задачи?
Задание на картинках, за ранние спасибо)

Подскажите как решаются задачи такого типа из контрольной по ТОЭ второго курса университета
Мне подробное решение не нужно, сам все вычислю, главное подскажите пожалуйста, как решаются задачи такого типа ? Задачи под номером 2

8
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
16.03.2021, 13:52
Динамическое программирование, не такая сложная задача.

Добавлено через 1 минуту
Anton1978, и да, препод, конечно, прав, потому что это очевидно не решение. Т. е. не просто "не понравилось".
2
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
16.03.2021, 14:54
Anton1978, я думаю, можно применить такой алгоритм:
ищем максимальное число в списке
прибавляем это число к конечной сумме
удаляем из списка это число и числа слева и справа от него(если они есть)
можно всё это оформить внутри цикла while с условием того, что список не пустой

Не по теме:

довольно быстро пришел к этому алгоритму, стоило только решить задачу на бумаге
(один из немногих полезных навыков, приобретённых в заведении, именующим себя вузом)

1
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
16.03.2021, 15:16
codcw,
Цитата Сообщение от codcw Посмотреть сообщение
ищем максимальное число в списке
прибавляем это число к конечной сумме
вряд ли жадный алгоритм сойдет
2
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
16.03.2021, 15:25
Как вариант (от codcw + рекурсия)
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def foo(lst):
    if not lst:
        return 0
    if len(lst) < 2:
        return max(lst)
 
    mx = max(lst)
    idx = lst.index(mx)
    if 0 < idx < len(lst) - 1:
        lst.pop(idx + 1)
        lst.pop(idx)
        lst.pop(idx - 1)
    elif idx == 0:
        lst.pop(1)
        lst.pop(0)
    else:
        lst.pop()
        lst.pop()
 
    return mx + foo(lst)
 
 
price = [9,6,5,3,2,0,4,7,8,1]
print(foo(price))
Преподу решение не понравилось, т.к. вы не учитываете тот факт, что можете пропускать сразу несколько домов.
1
 Аватар для Miryz
291 / 131 / 58
Регистрация: 24.11.2019
Сообщений: 532
16.03.2021, 15:43
Python
1
2
3
4
5
6
7
8
9
10
def solve(lst):
    s1 = s2 = 0
    for i in range(len(lst)):
        if i % 2:
            s1 = max(s1+lst[i], s2)
        else:
            s2 = max(s1, s2+lst[i])
    return max(s1, s2)
 
print(solve(tuple(map(int, input().split()))))
Добавлено через 3 минуты
ioprst,
price = [8, 9, 8]
print(foo(price))
9
5
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
16.03.2021, 15:56
ioprst, price = [9,6,7,9,8,0,4,7,8,1]
1
 Аватар для codcw
815 / 527 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
16.03.2021, 22:41
Miryz,

Не по теме:

так и знал, что будет какой-то подвох

1
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
17.03.2021, 13:00
Python
1
2
3
4
5
price = [9, 6, 5, 3, 2, 0, 4, 7, 8, 1]
s1 = s2 = 0
for x in price:
    s1, s2 = s2 + x, max(s1, s2)
print(max(s1, s2))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.03.2021, 13:00
Помогаю со студенческими работами здесь

Как решаются такие уравнения?
k*y'''''+k*y''''+k*y'''+k*y''+k*y'+k*y=0 (Уравнение 5-ого порядка, допустим оно выглядит так) как его решить?

Как решаются такие уравнения на C++?
x*cos(a) - k(Cx2*a^2 + Cx1*a + Cx0) - k1*sin(b) =0 x*sin(a) + k(Cy2*a^2 + Cy1*a + Cy0) -k1*cos(b)=0 Нужен код, способный решать...

Как решаются такие комплексные уравнения?
(2+i)*Z-(1+i)*Z-=i множитель у вторых скобок - сопряженный комплекс

Не могу разобраться как решаются такие задания
Могу сделать довольно трудный калькулятор а именно это задание вообще ни пойму

не могу разобраться как решаются такие задания
В больнице долго лежал и тут на тебе ничего не объясняя Объясните пожалуйста


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru