• 算法第四章实践


    第一题,直接一个排序,从小到大一直减下去,直到不能减,就能得出答案。

    第二题,删数。策略是使处于高位的数尽可能小,就可以使最后的数,从高到低每一位都是最小的。方法,从头扫到尾,从高位到低位。如果当前的数大于下一位,那么删去当前的数,使一个更小的数来取代这个位,就可以得到一个最优的数。

    第三题,跟课堂上说的思路差不多。而通俗简单易懂的说法就是:每一次都需要m+n-1次比较,那么求最少比较次数时,每一次找最小的m和n,直到所有序列都合并在一起。同理,求最多比较次数时,每一次找最大的m和n,就可以使每一次的m+n-1的值尽可能的大。

    第一题较容易,所以一开始就直接做出来了。第二题在第一次看的时候卡住了,就先跳到第三题。而第三题因为上一节课讲过,有印象,就很快有思路了。不过嘛,emm,为了方便理解(当时懒得优化),代码写的就有点难看,可以优化的地方还有很多很多。第二题放在了最后,在讨论了多个样例和方法后,比如从头到尾删去最大的k个数;找出最小的数当最高位然后再分类讨论,不过这个很复杂,就直接被灭了。最后想出,如果要求最小的,那么就是使它高位的数字尽可能的小,比如某一次删一个数的时候,每种可能列出来,为什么这个是最小的而其他并不是。最后总结得出结论:如果当前的数是递增的,那么后面的数上来时会比当前的数大,就会导致形成的数比最优的数大。做完后还有40分钟才下课,就开始没事干,去教其他同学,划水摸鱼玩手机,也是挺快乐的~

  • 相关阅读:
    Python3 实现一个简单的TCP 客户端
    Mac 下 安装 和 使用 Go 框架 Beego
    Go 操作文件及文件夹 os.Mkdir及os.MkdirAll两者的区别
    Go gin 之 Air 实现实时加载
    Mac os 配置常用alias
    Mac 下 MAMP配置虚拟主机
    Thinkphp5 项目部署至linux服务器报403错误
    Linux 安装最新版 node.js 之坑
    Mac item2如何使用rz sz 上传下载命令
    Mac 使用 iTerm2 快捷登录远程服务器
  • 原文地址:https://www.cnblogs.com/jjmmboom/p/11845130.html
Copyright © 2020-2023  润新知