zoukankan      html  css  js  c++  java
  • 算法第四章实践

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

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

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

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

  • 相关阅读:
    Jira-dashboard
    SCQA 结构化表达案例:让开场白、讲故事精彩的结构
    outlook 2016 系列1--自动回复
    outlook 2016 系列1--如何将同一回复主题的邮件放在一起
    C++ 成员限定符
    TCP/IP 协议分层
    TCP之拥塞控制
    TCP之流量控制
    TCP之滑动窗口
    TCP中的定时器
  • 原文地址:https://www.cnblogs.com/jjmmboom/p/11845130.html
Copyright © 2011-2022 走看看