Меню Закрыть

Сложные задачи по программированию

Содержание

Подборка состоит из различных материалов, содержащих сборники задач. Они познакомят вас с разными алгоритмами и принципами программирования.

М.Э.Абрамян, "1000 задач по программированию. Часть I"

Первая часть задачника включает в себя задачи начального уровня, которые посвящены скалярным типам данных, управляющим операторам, написанию процедур и функций с числовыми параметрами. Благодаря формулировке заданий, их можно использовать при изучении таких языков как Pascal, C++, Basic. Но для большинства задач можно применять и другие языки программирования, такие как Fortran или Java. Книга состоит из 18 групп заданий, каждая из которых имеет собственное название.

А. Шень, "Программирование: теоремы и задачи"

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

Мезенцев А.В., "Сборник задач по программированию с примерами"

Сборник задач для студентов 1-2 курсов специальностей «прикладная математика и информатика» и «математическое обеспечение и администрирование информационных систем».
Он содержит в себе задачи по таким темам как целые числа, массивы, строки, классы, динамические структуры данных и множеству других тем, которые будут полезны для начинающих. Также в книге содержатся примеры на языке Java.

Златопольский Д. М., "Сборник задач по программированию"

Пособие содержит более 1700 задач, каждая их которых имеет свой уровень сложности. Задания охватывают все темы курса программирования. Благодаря вопросам в начале каждой главы, читатель будет знать все необходимое для решения заданий, которые в ней содержатся. Решения могут быть написаны на любом языке, так как задачи никак не привязаны к какому-то конкретному языку.

А.А.Быков, "Сборник задач по программированию с решениями"

Сборник задач по таким темам как простейшие функции, рекурсивные функции, десятичные целые числа, условные операторы и циклы, случайные числа, сортировка, массивы и пр. Несмотря на четкое разделение задач по темам, стоит отметить, что для решения некоторых будет необходимо обратиться к разным разделам курса программирования.

Читайте также:  Mario rabbids kingdom battle прохождение

Ю. Г. Леонов, Л. В. Глазунова, В. А. Шаповаленко, В. Д. Кузнецов, "Сборник задач по программированию"

Цель этого сборника задач – развить навык решения задач программирования. Решая задачи, программист научится сложным алгоритмам, а также освоит современный язык программирования. Все задачи разделены на несколько уровней сложности.

С. А. Абрамов, Г. Г. Гнездилова, E. Н. Капустина, М. И. Селюн, "Задачи по программированию"

Сборник состоит из более чем 1000 задач, главная цель которых отработать основные приемы программирования. Благодаря формулировке заданий, задачи могут быть решены на любом языке. Книга будет полезна для начинающих программистов.

Подборка сайтов с задачами

Решение задач — хороший способ развития навыков программирования. Также вы можете при этом ускорить освоение нового для Вас языка программирования, решая головоломки на этом языке. В этой статье мы рассмотрим 27 самых популярных сайтов с задачками по программированию.

СПб.: 2006. — 366 с .

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

Формат: djvu / zip

Скачать / Download файл

От издательства . 11

Глава 1. Максимальный поток. 12

1.1. Примеры задач на максимальный поток . 12

1.2. Формальная постановка задачи. 14

1.3. Задача «Новогодняя вечеринка». 16

1.4. Задача «Кубики». 18

1.5. Задача «Игра» . 21

1.6. Пример максимального потока на графе. 25

1.7. Алгоритм Форда-Фалкерсона . 28

1.8. Решения задач. 33

1.9. Замечания по реализации . 44

Глава 2. Минимальное остовное дерево. 45

2.1. Формальная постановка задачи . 45

2.2. Алгоритм Прима . 47

2.3. Алгоритм Крускала . 51

2.4. Быстрая сортировка. 54

2.5. Задача «Secret Pipes». 55

2.6. Задача «Метро» . 59

2.7. Задача «Network» . 61

2.8. Решения задач. 63

Глава 3. Решение задач на деревьях и с помощью деревьев. 76

3.1. Практические примеры деревьев. 78

3.1.1. Деревья отношений . 78

Читайте также:  Рипкорд в кабеле это

3.1.2. Деревья попиксельного представления

плоских цветных образов. 78

3.1.3. Деревья представления сложных композиций трехмерных объектов

3.1.4. Деревья кодирования символов. 79

3.1.5. Деревья сортировки. 81

3.1.6. Деревья сумм. 82

3.1.7. Перечисление деревьев. 82

3.1.8. Представление деревьев в памяти компьютера. 83

3.1.9. Порядок обхода деревьев . 84

3.1.10. Организация материала и технология

работы с ним . 84

3.2. Задачи на основные свойства деревьев. 84

3.2.1. Задача «Is it a tree?» . 85

3.2.2. Задача «Strategic game» . 89

3.2.3. Задача «Оппозиция». 92

3.2.4. Задача «Erdos Numbers». 94

3.2.5. Задача «Closest Common Ancestor» . 96

3.3. Задачи на представление образов. 98

3.3.1. Задача «Unscrambling Images» . 99

3.3.2. Задача «BSP Trees» . 106

3.4. Задачи на двоичные деревья сортировки. 110

3.4.1. Задача «Дерево» . 110

3.4.2. Задача «Parliament» . 113

3.4.3. Задача «Falling Leaves». 117

3.5. Кодирование последовательностей символов

методом Хаффмана . 120

3.5.1. Задача «Кодирование» . 120

3.5.2. Задача «Entroov» . 124

3.6. Перечисление деревьев. 126

3.6.1. Задача «Nextree» . 126

3.6.2. Задача «Trees Made to Order». 132

3.7. Битово-индексированные деревья. 137

3.7.1. Задача «Мобильные телефоны» . 137

3.7.2. Структура данных BIT . 141

3.8. Задачи для самостоятельного решения. 145

3.8.1. Задача «Knockout Tournament». 145

3.8.2. Задача «Split Windows» . 147

3.8.3. Задача «Huffman Trees» . 149

3.8.4. Задача «Pre-Post-erous!» . 151

3.9. Решения задач. 153

Глава 4. Скрытые графы . 185

4.1. Инцидентность областей . 186

4.1.1. Задача «Тетраэдр» . 186

4.1.2. Задача «Стены» . 192

4.1.3. Задача «Блокада». 198

4.1.4. Задача «Мудрый правитель». 203

4.1.5. Задача «Ременная передача» . 207

4.2. Отношения других видов . 211

4.2.1. Задача «Currency Exchange». 211

4.2.2. Задача «Exchange Rates» . 215

4.2.3. Задача «Sorting It All Out» . 220

4.2.4. Задача «Проверка веб-страниц». 225

4.2.5. Задача «Play On Words» . 230

4.3. Задачи на множествах отрезков. 234

4.3.1. Задача «Падение». 235

4.3.2. Задача «The Doors». 241

4.3.3. Задача «Борозды» . 246

4.3.4. Задача «N-Credible Mazes». 250

4.4. Задачи для самостоятельного решения. 254

4.4.1. Задача «Door Man». 254

4.4.2. Задача «This Sentence is false» . 255

4.4.3. Задача «Will Indiana Jones Get There?» . 256

4.4.4. Задача «I hate SPAM, but some people love it». 257

Читайте также:  Список материнских плат 775 поддерживающих xeon

4.5. Решения задач. 260

Глава 5. Стратегические игры. 296

5.1. Задача «Алиса и Боб». 296

5.2. Задача «Ладья и конь» . 300

5.3. Задача «Нечестная игра» . 305

5.4. Как играть победно? . 308

5.5. Задача «Игра loiwari» . 308

5.6. Задача «Игра Score» . 314

5.7. Задача «Игра-2» . 319

5.8. Решения задач. 321

Глава 6. Диаграмма Юнга . 333

6.1. Введение в диаграмму Юнга . 333

6.2. Вставка и удаление элементов диаграммы. 333

6.3. Количество возможных диаграмм заданной

формы (п1, п2. пМ) . 335

6.4. Задача «Склад» . 336

6.5. Задача «Twofive» . 341

6.6. Решения задач. 353

Алфавитный указатель. 364

О том, как читать книги в форматах pdf , djvu — см. раздел " Программы; архиваторы; форматы pdf, djvu и др. "

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Для начала рассмотрим не сильно сложную задачу с одномерными массивами в Pascal:

Результат:


Подумайте, пригодится ли в программе счетчик или нет, нужны ли дополнительные переменные.

const m = 20; var arr: array[1..m] of byte; max_index: byte; i: byte; begin randomize; for i := 1 to m do begin arr[i] := random(100); write (arr[i]:3); end; max_index := 1; for i := 2 to m do if arr[i] > arr[max_index] then begin max_index := i; end; writeln; writeln (‘Max = ‘,arr[max_index]); writeln (‘position: ‘, max_index); end.

Результат:

Следующую сложную задачу с одномерными массивы следует разобрать подробно.

const n=20; var arr: array[1..n] of integer; i,j,m:integer; begin randomize; for i:=1 to n do begin arr[i]:=random(50); write(arr[i]:4); end; writeln; m:=n; i:=1; while i n переменной m требуется, т.к. n — константа и не может быть изменена. Поскольку при «просмотре» массива в цикле while некоторые элементы будут удаляться, то значение m , обозначающее длину массива, будет уменьшаться.

  • строка 21: Если очередной элемент не удаляется, то переходим к просмотру следующего элемента ( i := i + 1 ) и не уменьшаем массив ( m не меняется).
  • Пример:

    1. Определите в массиве A номер первого элемента, равного X .
    2. Определите номер первого элемента, равного X , в первой половине массива A (массив имеет чётное число элементов).
    3. Определите номер первого элемента, равного X , во второй половине массива A (массив имеет чётное число элементов).

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

    Рекомендуем к прочтению

    Добавить комментарий

    Ваш адрес email не будет опубликован.