profile
[/banner_gorizont_adaptive]
Размещено 3 года назад по предмету Информатика от lstejnbreher042

Ребят, кто хорошо разбирается в информатике и языке программирования Python. Помогите, пожалуйста!Преобразуйте одномерный массив таким образом,
чтобы сумма элементов в его первой половине была бы как
можно ближе к сумме элементов его второй половины. Исходный и преобразованный массивы выведите на экран. Нужно написать программу. Заранее спасибо)

  1. Ответ на вопрос
    Ответ на вопрос дан HP2020

    Пусть сумма всех элементов равна full_sum, а длина массива 2k.

    Предлагаю организовать банальный перебор: выберем k индексов из 2k, посчитаем сумму соответствующих элементов. Будем искать максимальную сумму, которая не превосходит full_sum/2. При этом сумма невыбранных элементов будет не меньше full_sum/2, и будет отличаться от суммы выбранных элементов на минимально возможную величину.

    Этот алгоритм работает быстро только для относительно небольших значений k. если нужно что-то быстрее, то придется придумывать что-то дополнительно.

    Код (Python 3):

    from random import randint

    from itertools import combinations

    k = 10

    a = [randint(1, 100) for _ in range(2 * k)]

    print(*a)

    full_sum = sum(a)

    half_sum = full_sum // 2

    max_sum = -1

    answer = None

    for seq in combinations(range(2 * k), k):

       s = sum(map(lambda ind: a[ind], seq))

       if s <= half_sum and s > max_sum:

           max_sum, answer = s, seq

       if s == half_sum:  

           break

    left = [a[i] for i in answer]

    right = [el for i, el in enumerate(a) if i not in answer]

    a = left + right

    print(*a)

    Пример вывода:

    50 39 19 63 16 4 82 45 63 33 6 57 39 16 38 4 66 56 87 84

    50 39 19 63 16 4 82 57 16 87 45 63 33 6 39 38 4 66 56 84

Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.