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

算法第四章实践报告

时间:2018-12-02 18:30:59      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:++   时间复杂度   nbsp   贪心算法   贪心   程序   出现   n+1   开始   

1、实践题目    删数问题

2、问题描述

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

3、算法描述

答:从第一个数开始往后比较,当出现降序的时候就把比后面大的那个数字删去,如果都符合的话就把后面的数字删去。当出现首位为0时,就需要遍历整段数字,把首个不为0的数字当作首位。

while(s>0){

         i=0;

         l=strlen(n);

         while(i<l&&n[i]<=[n+1])

          i++;

                   while(i<l){

                   n[i]=n[i+1];

                   i++;

          }

          s--;

}

4、算法时间及空间复杂度分析(要有分析过程)

答:空间复杂度:O(n);

        时间复杂度:程序中有两段while循环,每段循环为O(n),所以时间复杂度为O(n^2)

5、心得体会(对本次实践收获及疑惑进行总结)

答:在做这个删数问题的时候,一开始的算法是把最大的数逐个删去,但后来发现这个算法有反例,比如,2195,删去两个最大的数的话就是21,但其实最小的数应该是15才对。感觉贪心算法有时候很难一下子把这个符合的算法找出来,必须要举例验证才行。

算法第四章实践报告

标签:++   时间复杂度   nbsp   贪心算法   贪心   程序   出现   n+1   开始   

原文地址:https://www.cnblogs.com/dcw1130hhh/p/10054421.html

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