3156 - perm min max: Difference between revisions
Benzar Ioan (talk | contribs) Pagină nouă: == Cerința == Să se genereze toate permutările posibile ale unui șir de numere naturale, cu restricția ca permutarea să conțină numărul minim și numărul maxim din șir în poziții consecutive. == Date de intrare == Programul citește de la tastatură un șir de n numere naturale. == Date de ieșire == Pe ecran se vor afișa toate permutările șirului care respectă restricția dată, câte una pe linie. == Restricții și precizări == *1 ⩽ '''n''' ⩽ 10 *... |
Benzar Ioan (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
== Cerința == | == Cerința == | ||
Se citește o mulțime cu n numere naturale. Afișați în ordine lexicografică toate permutările mulțimii citite în care elementul minim și cel maxim nu își schimbă poziția. | |||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură | Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte, separate prin spații. | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va afișa pe ecran permutările cerute, pe rânduri separate, fiecare permutare având elementele separate prin câte un spațiu. | |||
== Restricții și precizări == | == Restricții și precizări == | ||
*1 | *1 ≤ n ≤ 10 | ||
* | *cele n numere citite vor fi mai mici decât 1.000.000.000 și vor fi distincte | ||
== Exemplu 1 == | == Exemplu 1 == | ||
;Intrare | ;Intrare | ||
6<br> | |||
8 2 7 9 4 5 | |||
;Iesire | ;Iesire | ||
4 2 5 9 7 8<br> | |||
2 | 4 2 5 9 8 7<br> | ||
4 2 7 9 5 8<br> | |||
4 2 7 9 8 5<br> | |||
4 2 8 9 5 7<br> | |||
4 2 8 9 7 5<br> | |||
5 2 4 9 7 8<br> | |||
5 2 4 9 8 7<br> | |||
5 2 7 9 4 8<br> | |||
5 2 7 9 8 4<br> | |||
5 2 8 9 4 7<br> | |||
5 2 8 9 7 4<br> | |||
7 2 4 9 5 8<br> | |||
7 2 4 9 8 5<br> | |||
7 2 5 9 4 8<br> | |||
7 2 5 9 8 4<br> | |||
7 2 8 9 4 5<br> | |||
7 2 8 9 5 4<br> | |||
8 2 4 9 5 7<br> | |||
8 2 4 9 7 5<br> | |||
8 2 5 9 4 7<br> | |||
8 2 5 9 7 4<br> | |||
8 2 7 9 4 5<br> | |||
8 2 7 9 5 4 | |||
Line 24: | Line 45: | ||
from itertools import permutations | from itertools import permutations | ||
def | def main(): | ||
n = int(input()) | |||
arr = list(map(int, input().split())) | |||
min_value = min(arr) | |||
max_value = max(arr) | |||
min_index = arr.index(min_value) | |||
max_index = arr.index(max_value) | |||
# To store the results | |||
results = set() | |||
# Generate permutations | |||
for perm in permutations(arr): | |||
if perm[min_index] == min_value and perm[max_index] == max_value: | |||
results.add(perm) | |||
# Sort results lexicographically | |||
results = sorted(results) | |||
for | |||
print(" ".join(map(str, | # Print results | ||
for result in results: | |||
print(" ".join(map(str, result))) | |||
if __name__ == "__main__": | if __name__ == "__main__": |
Latest revision as of 23:40, 2 June 2024
Cerința[edit | edit source]
Se citește o mulțime cu n numere naturale. Afișați în ordine lexicografică toate permutările mulțimii citite în care elementul minim și cel maxim nu își schimbă poziția.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale distincte, separate prin spații.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran permutările cerute, pe rânduri separate, fiecare permutare având elementele separate prin câte un spațiu.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10
- cele n numere citite vor fi mai mici decât 1.000.000.000 și vor fi distincte
Exemplu 1[edit | edit source]
- Intrare
6
8 2 7 9 4 5
- Iesire
4 2 5 9 7 8
4 2 5 9 8 7
4 2 7 9 5 8
4 2 7 9 8 5
4 2 8 9 5 7
4 2 8 9 7 5
5 2 4 9 7 8
5 2 4 9 8 7
5 2 7 9 4 8
5 2 7 9 8 4
5 2 8 9 4 7
5 2 8 9 7 4
7 2 4 9 5 8
7 2 4 9 8 5
7 2 5 9 4 8
7 2 5 9 8 4
7 2 8 9 4 5
7 2 8 9 5 4
8 2 4 9 5 7
8 2 4 9 7 5
8 2 5 9 4 7
8 2 5 9 7 4
8 2 7 9 4 5
8 2 7 9 5 4
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> from itertools import permutations
def main():
n = int(input()) arr = list(map(int, input().split()))
min_value = min(arr) max_value = max(arr)
min_index = arr.index(min_value) max_index = arr.index(max_value)
# To store the results results = set()
# Generate permutations for perm in permutations(arr): if perm[min_index] == min_value and perm[max_index] == max_value: results.add(perm)
# Sort results lexicographically results = sorted(results)
# Print results for result in results: print(" ".join(map(str, result)))
if __name__ == "__main__":
main()
</syntaxhighlight>