算法第四章上机实践报告
一、实践题目:
7-2 删数问题
二、问题描述:
给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最小的删数方案。
输入格式:第 1 行是1 个正整数 a。第 2 行是正整数k。
输出格式:输出最小数。
输入样例:在这里给出一组输入。例如:
178543
4
输出样例:在这里给出相应的输出。例如:
13
三、算法描述:
从前往后比较,若第i个数比第i+1个数大,则用第i+1个数覆盖第i个数,否则继续,直到最后一个数;重复覆盖操作,直到被覆盖的数的个数大于题目要求删掉的个数。
四、算法时间复杂度:代码有两个循环,时间复杂度为O(n²)。
算法空间复杂度:使用了一个数组来存储n位正整数a,所以空间复杂度是O(n)。
五、心得体会:
一开始做这道题想的是每次删掉最大的数,没有考虑到这样并不能保证剩下的数最小,一直没通过,后来老师说了之后才意识到问题。
做题还是要考虑全面,贪心选择的方法要选对,要多试几个测试数据,找到问题所在。