Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 18:38   #1
WOWka777
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 37
По умолчанию Вычислить номер по перестановке

Всем привет. передомною встала задача: перестановки расположены в лексикографическом порядке. Требуется получить порядковый номер любой взятой перестановки.
вот тут описан алгоритм решения данной задачи. но он работает не для всех перестановок. может быть я чегото не правильно делаю, или в алгоритме ошибка. Например не правильный номер получается для перестановки (3 4 1 2) или (2 3 5 1 4) подскажите что делать?
WOWka777 вне форума Ответить с цитированием
Старый 08.04.2011, 02:15   #2
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Алгоритм, который Вы указали, правильный. Он работает верно.
LeBron вне форума Ответить с цитированием
Старый 08.04.2011, 18:27   #3
WOWka777
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 37
По умолчанию

все, я разобрался. спасибо всем за внимание
вот код функции, может понадобиться кому-нибудь.
Код:
int GetSubstNumber(vector<int> &numbers)
{
  int fact = 1, result = 0;

for (int n = numbers.size() - 2; n >= 0; n--)
{
    fact *= numbers.size() - n - 1;
    int pos = numbers[n] - 1;

    for (int m = 0; m < n; m++)
        if (numbers[m] < numbers[n])
            pos--;

    result += pos * fact;
}
  return result;
}
Вложения
Тип файла: txt 4.txt (214 байт, 171 просмотров)

Последний раз редактировалось WOWka777; 08.04.2011 в 19:46.
WOWka777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вычислить номер месяца, имея номер недели? Ras2im Microsoft Office Excel 17 07.10.2012 03:31
по букве тома определить физический серийный номер накопителя, а не номер тома @лександр Помощь студентам 6 23.09.2010 15:05
Номер месяца MixanMM Общие вопросы Delphi 2 24.05.2010 15:23
В одномерном массиве , состоящем из n целочисленных элементов, вычислить номер максимального элемента мас Ufa Помощь студентам 1 21.04.2010 14:06
вычислить номер и величину максимального элемента массива, произведение элементов, среднее арифметическое Romer9999 Паскаль, Turbo Pascal, PascalABC.NET 6 19.01.2009 16:35