算法第四章作业

Posted on 2020-11-14 21:59  thousands  阅读(109)  评论(0编辑  收藏  举报

   1.你对贪心算法的理解

       贪心算法就是局部最优解,要确认问题是否具有贪心选择性质。难度较低,易于上手,但大部分情况不适用。

   2.请选择一道作业题目说明你的算法满足贪心选择性

4-2 删数问题 (110分)
 

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

输入格式:

第 1 行是1 个正整数 a。第 2 行是正整数k。

输出格式:

输出最小数。

输入样例:

在这里给出一组输入。例如:

178543 
4 
 

输出样例:

在这里给出相应的输出。例如:

13


#include<bits/stdc++.h>
using namespace std;
#define ll long long

string s;
int a[10005];
int k;

int main() {
    cin >>s;
    cin >>k;
    int len = s.size();
    int i, j;
    
    for (int i=0; i<len; i++) 
        a[i] = s[i]-48;
    
    for (int n=0; n<k; n++) {    
        for (i=0; i<len-1; i++) {
            if (a[i] > a[i+1]) {
                for(j=i; j<len-1; j++) 
                    a[j] = a[j+1];
                break;
            }
        }
        len--;
    }
    
    i = 0;
    while (i<=len-1 && a[i]==0) i++; // 快进到开头不是0
    
    if (i == len)
        cout <<0 <<endl;
    else
        for(j=i; j<=len-1; j++)
            cout <<a[j];
    
    return 0;
}

 

   3.请说明在本章学习过程中遇到的问题及结对编程的情况

 问题:适用性太窄,上限较低

结对编程:互相carry

Copyright © 2024 thousands
Powered by .NET 8.0 on Kubernetes