В
Все
Б
Биология
Б
Беларуская мова
У
Українська мова
А
Алгебра
Р
Русский язык
О
ОБЖ
И
История
Ф
Физика
Қ
Қазақ тiлi
О
Окружающий мир
Э
Экономика
Н
Немецкий язык
Х
Химия
П
Право
П
Психология
Д
Другие предметы
Л
Литература
Г
География
Ф
Французский язык
М
Математика
М
Музыка
А
Английский язык
М
МХК
У
Українська література
И
Информатика
О
Обществознание
Г
Геометрия
Макс528103
Макс528103
02.10.2020 12:18 •  Информатика

Обчисліть довжину двійкового коду деякого тексту за умови, що символи тексту закодовані з використанням таблиці кодів символів windows-1251. у тексті 32 сторінки, кожна сторінка містить 48 рядків, у кожному рядку в середньому 56 символів. виразіть довжину двійкового коду цього тексту цілим числом у найбільших можливих одиницях. будь ласка іть мені
мне

Показать ответ
Ответ:
Aleksandra20061
Aleksandra20061
13.11.2022 19:24

Рассмотрим следующую задачу. В обороте находятся банкноты k различных номиналов: a1, a2, ..., ak рублей. Банкомат должен выдать сумму в N рублей при минимального количества банкнот или сообщить, что запрашиваемую сумму выдать нельзя. Будем считать, что запасы банкнот каждого номинала неограничены.

Рассмотрим такой алгоритм: будем выдавать банкноты наибольшего номинала, пока это возможно, затем переходим к следующему номиналу. Например, если имеются банкноты в 10, 50, 100, 500, 1000 рублей, то при N = 740 рублей такой алгоритм выдаст банкноты в 500, 100, 100, 10, 10, 10, 10 рублей. Подобные алгоритмы называют «жадными», поскольку каждый раз при принятии решения выбирается тот вариант, который кажется наилучшим в данной ситуации (чтобы использовать наименьшее число банкнот каждый раз выбирается наибольшая из возможных банкнот).

Но для решения данной задачи в общем случае жадный алгоритм оказывается неприменимым. Например, если есть банкноты номиналом в 10, 60 и 100 рублей, то при N = 120 жадный алгоритм выдаст три банкноты: 100 + 10 + 10, хотя есть использующий две банкноты: 60 + 60. А если номиналов банкнот только два: 60 и 100 рублей, то жадный алгоритм вообще не сможет найти решения.

Но эту задачу можно решить при метода динамического программирования. Пусть F(n) -- минимальное количество банкнот, которым можно заплатить сумму в n рублей. Очевидно, что F(0) = 0, F(a1) = F(a2) =...= F(ak) = 1. Если некоторую сумму n невозможно выдать, будем считать, что F(n) = $ \infty$ (бесконечность).

Выведем рекуррентную формулу для F(n), считая, что значения F(0), F(1), ..., F(n - 1) уже вычислены. Как можно выдать сумму n? Мы можем выдать сумму n - a1, а потом добавить одну банкноту номиналом a1. Тогда нам понадобится F(n - a1) + 1 банкнота. Можем выдать сумму n - a2 и добавить одну банкноту номиналом a2, для такого понадобится F(n - a2) + 1 банкнота и т. д. Из всевозможных выберем наилучший, то есть:

F(n) = min(F(n - a1), F(n - a2),..., F(n - ak)) + 1.

Теперь заведем массив F[n+1], который будем последовательно заполнять значениями выписанного рекуррентного соотношения. Будем предполагать, что количество номиналов банкнот хранится в переменной int k, а сами номиналы хранятся в массиве int a[k].

const int INF=1000000000; // Значение константы }бесконечность}

int F[n+1];

F[0]=0;

int m, i;

for(m=1; m<=n; ++m) // заполняем массив F

{ // m - сумма, которую нужно выдать

F[m]=INF; // помечаем, что сумму m выдать нельзя

for(i=0; i<k; ++i) // перебираем все номиналы банкнот

{

if(m>=a[i] && F[m-a[i]]+1<F[m])

F[m] = F[m-a[i]]+1; // изменяем значение F[m], если нашли

} // лучший выдать сумму m

}

После окончания этого алгоритма в элементе F[n] будет храниться минимальное количество банкнот, необходимых, чтобы выдать сумму n. Как теперь вывести представление суммы n при банкнот? Опять рассмотрим все номиналы банкнот и значения n - a1, n - a2, ..., n - ak. Если для какого-то i окажется, что F(n - ai) = F(n) - 1, значит, мы можем выдать банкноту в ai рублей и после этого свести задачу к выдаче суммы n - ai, и так будем продолжать этот процесс, пока величина выдаваемой суммы не станет равна 0:

if (F[n]==INF)

cout<<"Требуемую сумму выдать невозможно"<<endl;

else

while(n>0)

for(i=0;i<k;++i)

if (F[n-a[i]]==F[n]-1)

{

cout<<a[i]<<" ";

n-=a[i];

break;

}

не удаляйте это

0,0(0 оценок)
Ответ:
zukara95
zukara95
11.07.2020 18:47

Мышь – это удобное устройство, с которого можно управлять объектами в графической операционной системе. Когда мышь движется по коврику, на экране перемещается указатель мыши. После наведения указателя мыши на объект с ним можно выполнить какое-либо действие. Действия над объектами выполняются кнопками мыши.

Указатель мыши – это тоже объект Windows, обладающий свойствами. Главное из них – форма. Указатель мыши может менять форму в зависимости от того, на каком объекте он установлен. Это свойство указателя мыши называется контекстной чувствительностью. Оно упрощает работу с системой, поскольку на экране наглядно видно, что можно сделать с объектом.

К основным приемам работы с мышью относятся следующие.

Наведение указателя. Указатель мыши устанавливается на нужный объект. Если задержать его на несколько секунд, часто рядом с указателем открывается всплывающая подсказка, которая кратко описывает назначение объекта.

Щелчок. Один щелчок левой кнопкой мыши. Щелчком элемент управления приводится в действие, объект – активизируется (выделяется, готовится к обработке).

Двойной щелчок. Два последовательных быстрых щелчка. Равносильно одинарному щелчку и нажатию [Enter]. Этим приемом выполняются операции с объектами: файлы открываются, программы запускаются. Обычно с каждым объектом можно выполнить несколько операций (например, файл можно открыть для просмотра, для редактирования, скопировать, переслать и прочее). Двойным щелчком выполняется та операция, которая задана как основная.

Правый щелчок. Открывает контекстное меню объекта, содержащее команды, которые можно выполнить с объектом. Основная операция выделена полужирным шрифтом. Важнейшая особенность контекстного меню состоит в том, что в нем всегда есть пункт Свойства. Щелчок на этом пункте позволяет получить информацию о свойствах объекта и изменить их. Так выполняется большинство настроек в Windows.

Перетаскивание. Перетаскиванием выполняется перемещение объектов. Указатель мыши надо навести на объект и нажать левую кнопку. Не отпуская кнопку мыши, надо переместить ее в другое место. Объект переместится вместе с указателем.

Протягивание. Выполняется так же как и перетаскивание, но при этом объект не перемещается, а изменяется. Протягиванием, например, изменяют размеры окон. Протягиванием можно выделить фрагмент текста для последующего копирования или удаления.

Специальное перетаскивание. Выполняется при нажатой правой кнопке. В момент освобождения правой кнопки открывается небольшое меню, из которого можно выбрать действие: перемещение (эквивалентно обычному перетаскиванию), копирование объекта или создание ярлыка для объекта.

Эти приемы относятся к так называемому классическому стилю управления мышью. В ОС Windows 98 существует несколько стилей управления мышью, из которых можно выбрать наиболее удобный для себя. Например, стиль Web соответствует тому, как принято работать в Internet (активизация объекта осуществляется наведением указателя мыши, запуск программ и открытие файлов - щелчком).

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота