Какая математика поможет мне решить задачи программирования? - PullRequest
0 голосов
/ 13 октября 2010

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

"Пусть A = [a1, a2, ..., an] - перестановка целых чисел 1,2, ..., n. Параиндексы (i, j), 1 <= i <= j <= n, является инверсией перестановки A, если ai> aj. Нам даны целые числа n> 0 и k> = 0. Что такое число n-элемент перестановки, содержащие ровно k инверсий? "(ИСТОЧНИК: http://www.spoj.pl/problems/PERMUT1/)

Какую математику мне нужно изучить, чтобы описание проблемы такого рода имело для меня смысл?

Ответы [ 4 ]

6 голосов
/ 13 октября 2010

Дискретная математика. Он имеет дело с множеством комбинаторик, вероятностей и т. Д., Что у вас есть в вашей проблеме. (http://en.wikipedia.org/wiki/Discrete_mathematics)

Возможность прочитать заданное уравнение, вероятно, тоже не помешает.

4 голосов
/ 13 октября 2010

Я был в подобном затруднении около месяца назад.Пока я не пришел об этом посте от Стива Йегге - Математика для программистов

Очень информативно, очень рекомендую прочитатьНадеюсь, после прочтения вы получите указатели, чтобы взять его оттуда.Всего наилучшего.

1 голос
/ 13 октября 2010

Я рекомендую взглянуть на одно (или оба) из следующего:

Грэм, Кнут Паташник: конкретная математика

Кнут: Искусство компьютерного программирования (Том 1)

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

0 голосов
/ 13 октября 2010

Звучит как типичная проблема перестановок. http://www.mathsisfun.com/combinatorics/combinations-permutations.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...