算法第四章实践报告 | 实践题解

Posted ljl-gd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法第四章实践报告 | 实践题解相关的知识,希望对你有一定的参考价值。

算法第四章实践报告

一、实践题目:7-2 删数问题

二、问题描述

给定n位正整数,去掉其中任意k <= n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。

 

三、算法描述

1.解法一:参考链接如下

https://blog.csdn.net/cqs_experiment/article/details/16975003

2.解法二:对于给定的一串数字,每次删除第一个左边大于右边的数字,若完全升序则删除最后一个数字,删除k次即可。输出结果的时候注意去掉前导0

3.代码如下:

(1)删除数字

while(s > 0) {
    i = 0;
    len = strlen(a);
    
    while (i < len && a[i] <= a[i+1]) {
        // 遍历a[i],直到找出a[i] > a[i+1]的a[i] 
        i++;
    }
    while (i < len) {
        // 移动数组元素 
        a[i] = a[i+1];
        i++;
    }
    s--;
    // 重新寻找 
}

(2)输出不含前导0

i = 0;
len = strlen(a);
while (a[i] == 0 && i < len) {
    i++;
}

四、算法时间及空间复杂度分析(含分析过程)

1.遍历次数n x 迁移次数n,时间复杂度:O(n)

2.空间复杂度(只有原先存储输入数据的数组):O(1)

 

五、心得体会(实践收获及疑惑总结)

1.实践收获:

这次实践作业是在上课时间开放的,时间控制提高了编程的强度。

对于具有明显的贪心选择性质的题目,采用贪心算法能快速解决问题,如题7-3

对于特定的贪心算法,还可以从时间/空间复杂度入手对其进行优化,如题7-1对于新数组元素的记录。

2.疑惑总结:

7-17-3较水,具有明显的贪心选择。个人感觉其实在做题的时候还需要严格证明一下贪心算法的正确性。

 

六、参考链接

1.https://blog.csdn.net/plain_maple/article/details/53426867

2.https://www.cnblogs.com/xiaoying1245970347/p/4630399.html

以上是关于算法第四章实践报告 | 实践题解的主要内容,如果未能解决你的问题,请参考以下文章

算法第四章实践报告

算法第四章上机实践报告

算法第四章上机实践报告

算法第四章上机实践报告

算法第四章上机实践报告

算法第四章上机实践报告