Другие языки программирования и технологии
решите задачу пожалуйста!
Улугбек любит последовательности чисел. Он выписал на карточки все числа от 1 до N. Он переставлял их до тех пор, пока не нашел К-тую перестановку в лексикографическом порядке. Найдите искомую перестановку. Формат входных данных В первой строке входного файла bynum.in записано число N (1 <= N <= 12) - количество элементов в перестановке, во второй - число K (1 <= K <= N!) - номер перестановки. Формат выходных данных Единственная строка файла должна содержать результат. Примеры: вводвывод 3 1 1 2 3
не стоит придираться к словам составителя задачи, элементы любой перестановки можно пронумеровать и вот он лексикографический порядок))) )
вот классический алгоритм на паскале:
http://window.edu.ru/window_catalog/files/r24334/2003_2_84.pdf
а мы замутим на VBA рабоче-крестьянский:
Sub p57260896()
kkk = 76
nnn = 0
stop1 = False
For i5 = 1 To 5
For i4 = 1 To 5
For i3 = 1 To 5
For i2 = 1 To 5
For i1 = 1 To 5
If i1 <> i2 And i1 <> i3 And i1 <> i4 And i1 <> i5 Then
If i2 <> i3 And i2 <> i4 And i2 <> i5 Then
If i3 <> i4 And i3 <> i5 Then
If i4 <> i5 Then
nnn = nnn + 1
End If
End If
End If
End If
If nnn = kkk Then
stop1 = True
End If
If stop1 Then
Exit For
End If
Next i1
If stop1 Then
Exit For
End If
Next i2
If stop1 Then
Exit For
End If
Next i3
If stop1 Then
Exit For
End If
Next i4
If stop1 Then
Exit For
End If
Next i5
Cells(1, 1) = "" + Str(i5) + Str(i4) + Str(i3) + Str(i2) + Str(i1)
End Sub
идея простая: перебираем цифирьки отбрасывая при счете одинаковые цифры
и останавливаемся на заданом номере
ответ получим:
при номере перестановки = 76
перестановка из 5 элементов = 4 1 3 5 2
вот классический алгоритм на паскале:
http://window.edu.ru/window_catalog/files/r24334/2003_2_84.pdf
а мы замутим на VBA рабоче-крестьянский:
Sub p57260896()
kkk = 76
nnn = 0
stop1 = False
For i5 = 1 To 5
For i4 = 1 To 5
For i3 = 1 To 5
For i2 = 1 To 5
For i1 = 1 To 5
If i1 <> i2 And i1 <> i3 And i1 <> i4 And i1 <> i5 Then
If i2 <> i3 And i2 <> i4 And i2 <> i5 Then
If i3 <> i4 And i3 <> i5 Then
If i4 <> i5 Then
nnn = nnn + 1
End If
End If
End If
End If
If nnn = kkk Then
stop1 = True
End If
If stop1 Then
Exit For
End If
Next i1
If stop1 Then
Exit For
End If
Next i2
If stop1 Then
Exit For
End If
Next i3
If stop1 Then
Exit For
End If
Next i4
If stop1 Then
Exit For
End If
Next i5
Cells(1, 1) = "" + Str(i5) + Str(i4) + Str(i3) + Str(i2) + Str(i1)
End Sub
идея простая: перебираем цифирьки отбрасывая при счете одинаковые цифры
и останавливаемся на заданом номере
ответ получим:
при номере перестановки = 76
перестановка из 5 элементов = 4 1 3 5 2
Ну для первой перестановки и так понятно, что будет.
А для входных данных: 3 2
или 3 5?
И почему для "лексикографического порядка" должно быть N! перестановок?
Вот определение из википедии:
Лексикографический порядок последовательностей предполагает, что последовательность предшествует последовательности, если для некоторого их начальные отрезки длины равны, а -й член последовательности меньше.
Примеры лексикографического порядка:
- последовательность чисел в любой системе счисления, записанных в фиксированной разрядной сетке (000, 001, 002, 003, 004, 005, …, 999)
- порядок слов в словаре. Предполагается, что буквы можно сравнивать, сравнивая их номера в алфавите. Тогда лексикографический порядок — это, например, ААА, ААБ, ААВ, ААГ, …, ЯЯЯ.
А в твоём случае, наверное, подразумевается тривиальная престановка!
Просто составитель задачи решил немного повыё....живаться!!!
А для входных данных: 3 2
или 3 5?
И почему для "лексикографического порядка" должно быть N! перестановок?
Вот определение из википедии:
Лексикографический порядок последовательностей предполагает, что последовательность предшествует последовательности, если для некоторого их начальные отрезки длины равны, а -й член последовательности меньше.
Примеры лексикографического порядка:
- последовательность чисел в любой системе счисления, записанных в фиксированной разрядной сетке (000, 001, 002, 003, 004, 005, …, 999)
- порядок слов в словаре. Предполагается, что буквы можно сравнивать, сравнивая их номера в алфавите. Тогда лексикографический порядок — это, например, ААА, ААБ, ААВ, ААГ, …, ЯЯЯ.
А в твоём случае, наверное, подразумевается тривиальная престановка!
Просто составитель задачи решил немного повыё....живаться!!!
пиши на почту
Abdulatif Mahmudov
Так это ты ему на почту ответ пиши. Он уже задал вопрос.
Похожие вопросы
- Помогите решить задачи пожалуйста
- Решите задачу пожалуйста по информатике
- помогите решить задачу пожалуйста на языке C++
- Машина Тьюринга. Решите задачу пожалуйста!!
- помогите пожалуйста решить задачу по работе компьютера!
- Помогите решить задачи на Си! Пожалуйста!!!
- Помогите,пожалуйста,решить задачу в Паскале.
- Помогите пожалуйста решить задачу по программированию. В чем я ошибаюсь?
- Объясните, пожалуйста, как решить задачу по информатике...
- Pascal. Помогите пожалуйста решить задачу в паскале !