zltzlt 发表于 2019-12-5 20:56:45

18463102026 发表于 2019-12-5 15:06


输入 超时

zltzlt 发表于 2019-12-5 20:58:03

sn8625 发表于 2019-12-5 15:41


解答错误

输入:
输出:998989796959291909089888888878584848383828181879797877777675747373737696767656362626166659585858565553515155555494544444342414141414141404383433303032925242221212021816141412121110111
预期结果:998989796959291909089888888887858484838382818179797877777767574737373696767666656362626159585858565555555535151494544444434241414141414140383433330302925242222121201816141412121111110

zltzlt 发表于 2019-12-5 20:59:10

776667 发表于 2019-12-5 16:37


输入 超时

阴阳神万物主 发表于 2019-12-5 21:02:39

zltzlt 发表于 2019-12-5 20:47
解答错误

输入:


哦豁,漏掉一个 int()
def solve(nums:list)->int:
    for i in range(len(nums)-1):
      for j in range(i+1,len(nums)):
            a,b = str(nums),str(nums)
            if int(a+b) < int(b+a):
                nums,nums = nums,nums
    #print('调试',nums)
    res = ''
    for each in nums:
      res += str(each)
    return int(res)
if __name__ == '__main__':
    print('示例1 8423201 输出:',solve())
    print('示例1 6654 输出:',solve())
    print('自测 6664 输出:',solve())
    print('自测 输出:',solve())

zltzlt 发表于 2019-12-5 21:03:06

闲愚 发表于 2019-12-5 20:06
以上例子均测试无误

输入 超时

zltzlt 发表于 2019-12-5 21:03:45

阴阳神万物主 发表于 2019-12-5 21:02
哦豁,漏掉一个 int()

恭喜通过!

执行用时:151 ms

闲愚 发表于 2019-12-5 21:19:51

zltzlt 发表于 2019-12-5 21:03
输入 超时

深度太大了

冬雪雪冬 发表于 2019-12-5 22:28:03

四点好 发表于 2019-12-5 03:12
In : def fun(lst):
   ...:   len1 = len(str(max(lst)))
   ...:   lst2 = [(str(x), str(x ...

怎么不对呢

冬雪雪冬 发表于 2019-12-5 22:32:01

阴阳神万物主 发表于 2019-12-4 23:39
我那个数据,输入数据的最后两位交换一下,您这还是错的呢

结果:

是的,这点没有考虑到

18463102026 发表于 2019-12-6 13:13:46

zltzlt 发表于 2019-12-5 20:56
输入 超时

修改#每日一题文档,旨在练习Pyhon熟练度和提高算法

def fun284(list_Num = ,n = 10):
    #n不能小于数组中元素位数最长的值
    '''日期20191204
原文链接:https://fishc.com.cn/forum.php?mod=viewthread&tid=151816&highlight=%C3%BF%C8%D5%D2%BB%CC%E2
今天的题目:
给出一组非负整数,重新排列它们的顺序,把它们组成一个最大的整数。

示例 1:
输入:
输出:8423201

示例 2:
输入:
输出:6654
'''
#该问题只要判断出每个元素的‘大小就可以’
#比较方法是比较最左边的大小,如果相同切有下一位则比较下一位
#该方法比较大小可以通过转换为同一次级10**n,如65和6则转换为65和60
    def buquan(num,len_num = n):
    #将所有整数通过末尾加 原来末尾的最后一位 转换为长度相同的整数
      if num != 0 :
             while num <10**n-1:
               num= num * 10 +num%10
      return num
   
    s = ''
    list_Num.sort(key = buquan ,reverse = True)#将数字变为字符串降序
    for i inlist_Num:
      s += str(i)
    return int(s)

                                          
print('输入为:\t输出最大整数为:%d'             %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'                  %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'   %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'%(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'                   %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'                  %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'                  %(fun284(list_Num = )) )
print('输入为:\t输出最大整数为:%d'                  %(fun284(list_Num = )) )

======================== RESTART: E:\办公\代码\每日一题284.py ========================
输入为:        输出最大整数为:8423201
输入为:        输出最大整数为:6654
输入为:        输出最大整数为:292822822262242
输入为:        输出最大整数为:66661650595809
输入为:        输出最大整数为:2221
输入为:        输出最大整数为:6764
输入为:        输出最大整数为:310
输入为:        输出最大整数为:0
>>> 了下

fan1993423 发表于 2019-12-8 12:43:35

四点好 发表于 2019-12-5 03:12
In : def fun(lst):
   ...:   len1 = len(str(max(lst)))
   ...:   lst2 = [(str(x), str(x ...

答案哪里错误了?最大值就是123121。

18463102026 发表于 2019-12-9 16:31:38

最新学习结果,看看这个怎么样from functools import cmp_to_key
def fun(s):
    s.sort(key = cmp_to_key(lambda x,y:int(str(x)+str(y))-int(str(y)+str(x))),reverse = True)
    return int(''.join(list(str(i) for i in s)))

yile126 发表于 2019-12-9 22:17:19

本帖最后由 yile126 于 2019-12-9 22:20 编辑

我也来发一个:
def fun284(num_list):
    list = []
    reslut = ''
    max_num = max(num_list)
    for num in num_list:
      if len(str(max_num)) == len(str(num)):
            list.append()
      else:
            list.append(*(len(str(max_num))-len(str(num))),len(str(max_num))-len(str(num))])
    list.sort(reverse=True)
    for num in list:
      reslut += num)-num]
    return reslut

#num_list =
#num_list =
#num_list =
#num_list =
#num_list =
#num_list =
#num_list =
num_list =
result = int(fun284(num_list))
print(result)

ouyunfu 发表于 2020-3-23 16:28:57

Unicorn# 发表于 2019-12-4 22:37


你好,可否解释一下这个代码!

Unicorn# 发表于 2020-3-24 22:31:14

ouyunfu 发表于 2020-3-23 16:28
你好,可否解释一下这个代码!

好久以前的代码了,写个注释叭
#原题需要最大排列,只需要将大的数放在靠前的数位,那么这些需要
#排进去的数字以 靠前的数字更大 的规则进行排序即可
def solve(nums):
    class CapStr(str):
      #'Cap' 取自 capital
      def __lt__(self, value):
            #魔法方法之 __it__(self, value):
            #         Return self<value
            i = j = 0
            while self == value:
                #处理同一数位相同情况
                if i < len(self)-1:
                  i += 1
                if j < len(value)-1:
                  j += 1
                if i == len(self)-1 and j == len(value)-1:
                  break
            return self < value
    return int(''.join(
      sorted(
            map(lambda x:CapStr(x), nums)
            #把int变成CapStr
            , reverse=True)
      )
               )

ouyunfu 发表于 2020-3-25 05:38:25

Unicorn# 发表于 2020-3-24 22:31
好久以前的代码了,写个注释叭

谢谢!
页: 1 2 [3]
查看完整版本: Python:每日一题 284