М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
nagovitsynaari
nagovitsynaari
01.08.2021 01:07 •  Информатика

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

👇
Ответ:
вованоджи
вованоджи
01.08.2021

Пусть сумма всех элементов равна 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

4,7(90 оценок)
Открыть все ответы
Ответ:
ащна
ащна
01.08.2021
Носитель информации - это любой материальный объект, используемый для закрепления и хранения на нем информации.
В современном обществе можно выделить три основных вида носителей информации:
1) бумажный;
2) магнитный;
3) оптический.
Бумажные носители информации.
Одним из самых распространенных носителей информации является бумага. В школе мы записываем информацию в тетради, теоретический материал изучаем по учебникам, при разработке доклада, реферата или другого сообщения необходимые сведения мы находим в других источниках (книгах, энциклопедиях, словарях и т. д) , которые в свою
очередь являются бумажными носителями информации
Первые вычислительные машины работали на перфокартах. Перфокарты делали из плотной бумаги- картона, на которые по определенному правилу с специального «станка» - перфоратора наносили отверстия в виде
небольших дырочек.
Магнитные носители информации
В 1928 году была изготовлена первая магнитная лента. Наши бабушки и дедушки слушали музыку на магнитофонах с магнитной лентой, которую называли «Бабина» .
Магнитная лента оказалась достаточно надежным, долговечным и доступным каждому носителем информации.
В первых ЭВМ (электронно- вычислительных машинах) информация хранилась на магнитных лентах и магнитных дисках
В современных компьютерах в качестве носителя информации используются следующие магнитные носители :
1) дискета (на которую можно поместить данные 3000 перфокарт) .
. Внутри пластмассового корпуса расположен гибким магнитный диск, поверхность которого покрыта специальным магнитным веществом. Информация записывается на обе его поверхности. Чтобы при работе с дискетой ее не надо было переворачивать, внутри флоппи-дисковода (устройства, которое записывает или считывает информацию с дискеты) имеется две магнитные головки, каждая для своей стороны дискеты. Такой диск требует особого обращения, магниты, повышенная температура и влажность разрушают хранящуюся на нем информацию.
2) жесткий магнитный диск или винчестер ( хранит 100 000 и более дискет) . Внутри жесткого металлического корпуса находятся несколько десятков дисков магнитных дисков, размещенных на одной оси . Запись или считывание информации обеспечивается несколькими магнитными головками. В целях сохранения информации и работо жесткие магнитные диски необходимо оберегать от ударов и резких изменений положений системного блока (нельзя наклонять и переворачивать в процессе работы) .
3) стриммеры (стрим-картриджи) - устройства, обеспечивающие запись или считывание звуковой информации . Внутри данного носителя находится магнитная лента.
Оптические носители информации
Самым распространенными носителями информации являются оптические или лазерные диски .
Лазерные диски изготавливают из пластмассы, сверху покрывают тонким слоем из металла и прозрачным лаком, защищающим от незначительных царапин или загрязнений. Запись или считывание информации в CD-дисководе осуществляется с света лазера. При записи лазерный луч выжигает на поверхности диска микроскопические углубления, кодируя тем самым информацию (при считывании -лазерный луч отражается от поверхности вращающегося диска) . Такие диски следует оберегать от пыли и царапин.
Различают CD и DVD диски.
4,6(55 оценок)
Ответ:
gyon
gyon
01.08.2021

#include <iostream>

#include <vector>

using namespace std;

// глобальные переменные

const int arraySize = 10;

vector <int> numbers;

// сам алгоритм.

void result(){

   

 // совет - обьявляй все переменные в начале функции  

 int leader = 0;

 

 int maxCount = 0;

 int count = 0;

 

 

 // поиск самого частого числа

 for (int c = 0; c < 9;c++){

     // обнуляем счетчик

     count = 0;

     

     for (int c1 = 0;c1 < arraySize;c1++){

         if (numbers[c1] == c) count++;

     }

     

     // проверка на лидера

     if (maxCount < count){

         leader = c;

         maxCount = count;

     }

 }

 

 

 // ну..с посмотрим:

 cout << "Leader: " << leader << " (" << maxCount << ") " << std::endl;

}

int main()

{

   // подготовка масива

   srand(time(NULL)); // обнулем внутрений таймер для полного рандома

   for (int c = 0; c < arraySize;c++) {

       numbers.push_back(rand() % 9); // заполняем масив числами

   }

   // посмотрим на оригинальный масив

   cout << "Original array: ";

   for (int c = 0;c < arraySize;c++) cout << numbers[c] << " ";

   cout << std::endl;

   // сортировка

   result();

   return 0;

}

Объяснение:

Хорошая книга по с++: Герберт Шилд - с++ базовый курс.

4,5(96 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ