算法第四章实践报告
1.实践题目
7-2 删数问题
2.问题描述
给定n位正整数a,去掉其中任意k≤n 个数字后,剩下的数字按原次序排列组成一个新 的正整数。对于给定的n位正整数a和正整数 k,设计一个算法找出剩下数字组成的新数最小的删数方案。
3.算法描述
在进行一个序列的删数操作,如1234,我们首先最优应该删掉一个从首开的递增序列的尾数,若只有一个数字,则删掉改数字就能取得局部最优,重复这个过程就能得到最优解。
while(count<k){ count++; int num=0; for(int i=0;i<len-1;i++) { if(a[i]>a[i+1]) break; num++; } for(int i=num;i<len;i++) a[i]=a[i+1]; len--; }
4.算法时间及空间复杂度分析
空间是on,然后算法每一次都要遍历一次数组,然后进行K次删数操作,因而复杂度应为o(kn)
5.心得体会
本次实践在删数这道题上最后删0的时候出现了一点失误,但是好像PTA平台样例有问题所以交的三发不同代码都能过,通过结对编程,最后完善了代码。然后第一题和第三题比较顺利的完成。

浙公网安备 33010602011771号