算法第四章上机实验报告

算法第四章上机实验报告

一.实践题目名称: 删数问题

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

输入格式:

第 1 行是1 个正整数 a。第 2 行是正整数k。

输出格式:

输出最小数。

 

 

三.贪心选择策略:将正整数每个位数分别存入数组,从高位到低位来循环,如果第i个数大于第i+1个数,则删除第i个数,如果循环结束删除数小于k,则从数组最后开始删除直到删除总数为k个。然后输出数组,若数组开头为‘ 0 ’则不输出‘ 0 ’。

 代码如下:

 

 

 

四.时间复杂度分析

删除数循环时间复杂度为O(m*k); 输出数组的时间复杂度为O(m-k)

所以,算法的时间复杂度为O(m*k).

五.对贪心算法的理解

贪心算法的基本要素为最优子结构性质和贪心选择性质(某种意义的局部最优)。

贪心算法指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。

算法所得到的结果不一定是最优的结果,但是都是相对接近最优解的结果。

 

posted @ 2021-11-11 23:39  曾梦缘  阅读(9)  评论(0编辑  收藏  举报