拼多多:选靓号(Python语言实现)

题目描述

A国的手机号码由且仅由N位十进制数字(0-9)组成。一个手机号码中有至少K位数字相同则被定义为靓号。
A国的手机号可以有前导零,比如000123456是一个合法的手机号。
小多想花钱将自己的手机号码修改为一个靓号。修改号码中的一个数字需要花费的金额为新数字与旧数字之间的差值。
比如将1修改为6或6修改为1都需要花5块钱。
给出小多现在的手机号码,问将其修改成一个靓号,最少需要多少钱?
  • 输入描述
第一行包含2个整数N、K,分别表示手机号码数字个数以及靓号至少有K个数字相同。
第二行包含N个字符,每个字符都是一个数字('0'-'9'),数字之间没有任何其他空白符。表示小多的手机号码。
数据范围:2 <= K <= N <= 10000
  • 输出描述
第一行包含一个整数,表示修改成一个靓号,最少需要的金额。
第二行包含N个数字字符,表示最少花费修改的新手机号。若有多个靓号花费都最少,则输出字典序最小的靓号。
  • 示例
输入:
6 5
787585

输出:
4
777577

找规律

最少花费通过设置上下界依次对求每个数字修改的差值的和进行求得。进行值修改的时候要注意,大于的要从前往后,小于的要从后往前,这样输出的总是字典序最小的。

def select_phone_number(seq, k):
    front, rear = min(seq), max(seq)
    value, compare = 0, float('inf')
    for cur in range(front, rear+1):
        subtraction = [abs(cur-su) for su in seq]
        traction = sorted(subtraction)
        current = sum(traction[:k])
        if current < compare:
            compare = current
            value = cur
    pos = [value-su for su in seq]
    stand = sorted(list(set(map(lambda x: abs(x), pos))))
    while k > 0:
        nxt = min(stand)
        if nxt == 0:
            k -= pos.count(0)
            stand.remove(nxt)
            continue
        left = value + nxt
        while k > 0 and left in seq:
            li = seq.index(left)
            seq[li] = value
            k -= 1
        right = value - nxt
        while k > 0 and right in seq:
            ri = len(seq)-1-(seq[::-1].index(right))
            seq[ri] = value
            k -= 1
        stand.remove(nxt)
    return compare, seq


if __name__ == '__main__':
    [n, k] = list(map(int, input().strip().split()))
    seq = list(map(int, list(input().strip())))
    value, res = select_phone_number(seq, k)
    print(value)
    print(''.join(map(lambda ru: str(ru), res)))

(最近更新:2019年09月01日)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSDN提供了OpenCV 4计算机视觉的Python语言实现的下载。OpenCV是一个流行的计算机视觉库,它提供了在图像和视频处理中常用的函数和工具。Python是一个简单易学的编程语言,也是OpenCV的主要支持语言之一。 要下载OpenCV 4的Python语言实现,可以按照以下步骤进行操作: 1. 首先,打开CSDN网站,并在搜索栏中输入"OpenCV 4计算机视觉:Python语言实现"的关键词。点击搜索按钮。 2. 在搜索结果中找到相应的下载链接。通常,下载链接之前会有一些介绍和说明,可以帮助你理解该资源的相关信息。 3. 点击下载链接,可能需要先进行登录或注册。如果是付费资源,可能需要完成购买。 4. 下载完成后,将下载的文件保存到本地电脑的某个文件夹中。可以择一个容易找到的位置,方便后续的安装和使用。 5. 解压下载的文件(如果有压缩文件),得到一个文件夹。该文件夹中应该包含有OpenCV 4的Python代码和相关的示例。 6. 打开Python集成开发环境(IDE),例如PyCharm、Anaconda等,并创建一个新的Python项目。 7. 将解压后得到的文件夹中的Python代码复制到新项目的文件夹中。 8. 在Python项目中运行OpenCV 4的Python代码。可以使用IDE提供的运行按钮或者在命令行中运行相应的命令。 通过以上步骤,你可以从CSDN上下载OpenCV 4的Python语言实现,并在本地搭建和运行计算机视觉应用程序。记得阅读附带的文档和示例,以便更好地理解和应用OpenCV 4库中的函数和方法。 ### 回答2: 要在CSDN上下载OpenCV 4计算机视觉:Python语言实现的代码,你可以按照以下步骤进行操作: 1. 打开CSDN网站并登录你的账号。 2. 在网站上方的搜索栏中,输入“OpenCV 4计算机视觉:Python语言实现”并点击搜索按钮。 3. 在搜索结果列表中找到与你要下载的内容最相关的文章或资源。 4. 点击进入该文章或资源的详细页面。 5. 在详细页面上,你可以找到文章作者提供的代码下载链接,通常会以类似于“Download”、“Code Download”或者“资源下载”等文字来标识。 6. 点击下载链接,你将被重定向到一个新的页面。 7. 在新页面中,你可能需要先进行人机验证(如输入验证码)。 8. 通过验证后,你可以直接点击下载按钮来下载代码资源。 9. 下载完成后,你可以将代码解压缩到你想要保存的文件夹中。 10. 现在,你可以在本地计算机上使用Python编辑器打开代码,进行阅读和运行。 在下载过程中,你可能会遇到广告或其他弹窗,要小心避免误点击。有时,某些资源需要付费或注册后才能下载,所以请确保你已阅读好相关信息。 以上就是在CSDN上下载OpenCV 4计算机视觉:Python语言实现的简要步骤说明。希望这对你有帮助! ### 回答3: 要在CSDN上下载OpenCV 4计算机视觉的Python语言实现,可以按照以下步骤进行操作: 1. 打开CSDN官网,或者在搜索引擎中搜索CSDN官网进入主页。 2. 在CSDN主页的搜索栏中输入关键词"OpenCV 4计算机视觉 Python",点击搜索图标。 3. 在搜索结果中找到与所需下载相关的文章或教程,点击进入详情页面。 4. 在详情页面中,可以查看相关内容的详细介绍和下载链接。找到合适的下载链接,点击进入下载页面。 5. 在下载页面中,可以择下载的方式和格式。Python版本,并点击下载按钮。 6. 根据浏览器的设置,可能会出现弹窗询问是否保存文件,择保存文件并择保存路径。 7. 下载完成后,找到保存路径下的文件,并解压缩(如果需要)。 8. 打开解压后的文件夹,可以看到其中包含的Python代码和相关数据文件。 9. 打开Python开发环境(如Anaconda),创建一个新的Python项目。 10. 将下载的代码文件复制到新项目中,并确保相关依赖项已安装(如OpenCV、NumPy等)。 11. 打开代码文件,按照代码中的说明运行Python程序。 12. 根据需要,可以根据代码的注释和说明进行修改和调试。 13. 运行程序后,可以看到计算机视觉相关的功能实现,例如图像处理、目标检测等。 14. 根据实际需求进行调整和改进,并保存结果或输出。 以上是在CSDN上下载OpenCV 4计算机视觉Python语言实现的一般步骤,具体过程可能因教程和代码的不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值