给出如下清单: [3,30,34,5,9]。 输出:9534330 编写一个程序以返回尽可能大的数
在我的代码中,我在这里使用了置换:
from itertools import permutations
x = [3, 30, 34, 5, 9]
y = permutations(x)
n = len(y)
e = []
for i in y:
a = map(str, i)
e.append(int("".join(i)))
print "Largest Number {}".format(sorted(e)[-1])
这里n是置换数的长度,是120,因为5!。 有没有更好的方法来解决这个问题?在
这个问题的解决导致了一个有趣的转变,值得解释。在
假设我们想知道对于给定的},哪个{}或{}哪个更大。在数值上,我们需要
X
和{X.10^y + Y
和Y.10^x + X
中的最大值,其中小写表示大写变量的位数。在再加上一点数学比较
可以重写
^{pr2}$因此
XY < YX
确实是一个传递关系,它定义了一个全序。这是一个非常好的消息,因为这意味着通过使用这种修改后的比较操作,问题可以简化为普通排序。在现在请注意,},只需在最长的周期内进行比较就足够了。因此,比较可以像普通的字符串比较一样工作,只是当到达较短字符串的结尾时,我们会循环回到第一个字符。在
X / (10^x - 1)
是0.XXXX...
形式的一个周期分数,要比较0.XXXX...
和{例如,}是因为
12345 > 12
是因为12345 > 12|12|1
,而{12105 < 12|12|1
。在比较功能描述如下:
我不推荐这种特定的实现,因为
%
,它会很慢。在按降序排列所有数字是我们遇到的最简单的解决方案。但这行不通。在
例如,548大于60,但在输出中,60在548之前。作为第二个例子,98大于9,但是在输出中9在98之前。在
解决方案是使用任何基于比较的排序算法。因此,与其使用默认比较,不如编写一个比较函数myCompare()并使用它对数字进行排序。在
给定两个数字X和Y,myCompare()如何决定将哪个数字放在第一位–我们比较两个数字XY(Y附加在X末尾)和YX(X附加在Y末尾)。在
如果XY较大,那么在输出中,X应该在Y之前,否则Y应该在X之前
例如,让X和Y分别是542和60。为了比较X和Y,我们比较了54260和60542。因为60542大于54260,所以我们把Y放在第一位。在
计算排列会产生更高的时间复杂度。 python中更好的解决方案是:
相关问题 更多 >
编程相关推荐