码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-12-01 23:30:27      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:lib   第四章   心得   class   color   第一个   http   www   严格   

算法第四章实践报告

一、实践题目: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

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

标签:lib   第四章   心得   class   color   第一个   http   www   严格   

原文地址:https://www.cnblogs.com/ljl-gd/p/10036695.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!