算法第四章上机实验报告

 

1.请选择实验课题目说明你的算法满足贪心选择性质,并给出时间复杂度分析。

实验题目:删数问题

给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最小的删数方案。如果数字最前面有0不输出。

贪心策略:

178543,删去4个数,获得个两位数。要想这个两位数是最小的方案,首先要满足该两位数的十位选择的是可选择中的最小数即可,如果选择的是最后一位数字,在此之后便没有其他数字可满足组合为两位数,故我们要在这六位数字中从前五位中确认十位数,同理,获取三位数需要在最后两位前筛选最优百位数。定义首尾指针,表示查找当前位数的范围,首指针从0开始,在不断更新位数的过程中更新为找到数的后一位,尾指针指向s.length()减保留位数。

时间复杂度:

最好情况:O(n)

最坏情况:O(nlogn)

2.你对贪心算法的理解。

贪心算法就是每一步都选择最优的方案,组合成的结果就是最优的结果。这个算法思想能帮助我们轻松解决大部分问题,但不代表所有的问题都能用贪心算法解决,并不是每一步最优组成的就是最优的答案。生活中,我们做的事情结果不一定会是最好的,但只要我们每一步都走的最好,那么结果不至于会差。

posted @ 2021-11-15 19:32  JinBzzz  阅读(9)  评论(0编辑  收藏  举报