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

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

16.03.2021, 13:49. Показов 1205. Ответов 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
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,181
Записей в блоге: 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
8840 / 4492 / 1864
Регистрация: 27.03.2020
Сообщений: 7,312
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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru