ブルーブリッジカップの選択された質問シリーズ-暴力的なスペリング

トピックの説明

n個の正の整数a1...anがあり、それらを1行に結合し、隣接する数値を端から端まで接続して最大の整数を形成します。

説明を入力してください

最初の行には、桁数nを表す整数があります。

2行目には、指定されたn個の整数aiを表すn個の整数があります。

其中, 1 <= n <= 20,1<= ai <= 10^9。

出力の説明

最大の整数を表す正の整数を出力します

入出力例

例1

入力

3
13 312 343

出力

34331213

例2

入力

4
7 13 4 246

出力

7424613

ソリューションと詳細な説明

from itertools import *
n =int( input())  
list2 = []    //创建一个空列表
list1 = list(  map(str, input().split() )   ) 
for s in permutations(list1):
    a = ' '.join(s)
    list2.append(a)
print(max(list2))

このコードのロジックは、主にこのコードを通じて、いくつかの重要な機能を導入するために複雑ではありません。

1.順列()

使用法:itertools.permutations(iterable、r = None)
関数:反復可能シーケンス内の要素によって生成された長さrの順列を継続的に返します(rが指定されていないかNoneの場合、rはデフォルトで反復可能の長さに設定されます。つまり、世代にはすべての要素の完全な配列が含まれます。
注:同一の要素がある場合、異なる位置にある要素は異なると見なされます。

さて、3つの要素{a、b、c}から長さ2のすべての順列を見つけたい場合は、2つの方法でそれを行うことができます。

最初のアプローチ:

from itertools import *
s = ['a','b','c']
for element in permutations(s, 2):
    a = element[0] + element[1] 
    print(a)

2番目のアプローチ:

from itertools import *
s = ['a','b','c']
for element in permutations(s,2):
    a=''.join(element)    #把所有元素拼起来 
    print(a)

両方のメソッドを実行した結果は次のとおりです。

ab
ac
ba
bc
ca
cb

3行目の順列を順列に変更すると、すべての要素が完全に配置されます。
それに加えて、permutations()には欠陥があります。次に大きい順列を順番に出力することはできません。以下の栗を見てください:

from itertools import *
s = ['1','3','2']
for element in permutations(s):
    a=''.join(element)    #把所有元素拼起来 
    print(a)

出力は次のとおりです。

132
123
312
321
213
231

すべての順列を出力しますが、昇順では出力されないことがわかります。これにより、順次出力が必要な特定のシナリオでpermutations()が制限されます。ただし、最小の順列から始めた場合でも、permutations()は小さいものから大きいものの順に出力できます。したがって、最初に並べ替えて最小の順列を取得してから、permutations()を使用できます。
2. map()
map()関数は、パラメーターとして関数を受け取り、パラメーターとして1つ以上の反復可能オブジェクトを受け取り、イテレーターを返します。このイテレータの各要素は、イテレータに順番に適用された関数の引数の結果です。

map(function,iterable,……)

function:関数
iterable:1つ以上のiterableオブジェクト
戻り値:イテレータを返します。

たとえば、
0〜9の数値のリストを生成し、map()関数を使用してリストの各要素の2乗を計算します。コードは次のとおりです。

list1 = []
for i in range(10):
	list1.append(i)
def square(x):
	return x**2
list2 = map(square,list1)
print(list(list2))

おすすめ

転載: blog.csdn.net/m0_51951121/article/details/122614946
おすすめ