算法第四章实践报告

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平台样例有问题所以交的三发不同代码都能过,通过结对编程,最后完善了代码。然后第一题和第三题比较顺利的完成。

 

posted @ 2018-11-30 14:22  crisp  阅读(114)  评论(0)    收藏  举报