算法第四章作业
1.你对贪心算法的理解
贪心算法是针对于某些问题,通过局部最优选择达成全局最优的方法。而针对不同的题目,贪心算法的局部最优选择会有所不同,解题的关键是该问题是否具有贪心选择性质以及是否找到最优解的方法,这很大程度上决定了算法的效率以及准确性。
2.请选择一道作业题目说明你的算法满足贪心选择性质
给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最 小的删数方案。
输入格式:
第 1 行是1 个正整数 a。第 2 行是正整数k。
输出格式:
输出最小数。
输入样例:
在这里给出一组输入。例如:
178543
4
输出样例:
在这里给出相应的输出。例如:
13
要求得此问题的最优解,即使得输出答案最小,关键在于高位数字的大小,若使得最高位取能取得的最小值,并保证次高位也
满足这个条件,直到最低位,就可以求出最优解。算法使用了三重循环,第一重循环循环k次,即确保删掉题目要求个数的数字
后得出答案,第二重循环从给定整数的第一位数字开始比较,即从最高位开始比较,如果次高位的数字比最高位的数字小,则
将目前最高位的数字删掉,反之则比较下一位数与下下位数,算法采用的删数方法是将该位后面所有位数的数字前移,删掉一
个数之后,从新的整数的第一位继续开始比较,直至删完题目要求个数的数,得到最优解。
3.请说明在本章学习过程中遇到的问题及结对编程的情况
本章的关键在于如何找到最优解,在做上述题目的途中,并没有很好的找到最优解就着手去写代码,结果在写的过程中出现了很多的问题。同时,没有选择确切的删除数字的方法,想走窍门结果反而给自己添乱。结对编程,两个人在最优解的选择上各有各的想法,如何去选择最优的算法在两个人的思考下很容易得出结果,但如何去实现存在一定的困难,还需多打题多学习解题技巧。