• (贪心)nyoj448-寻找最大数


    题目描述:

    请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,

    比如当n=92081346718538,m=10时,则新的最大数是9888

    输入描述:

    第一行输入一个正整数T,表示有T组测试数据
    每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)

    输出描述:

    每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数

    样例输入:

    2
    92081346718538 10
    1008908 5

    样例输出:

    9888
    98
    ---------------------------------------------------------------------------------------------------
    emmmm,太弱了,一个简单的贪心题要思考很久。。。。要多练习,多学习。
    这个题是贪心的。比如,在第一个样例中,要拿出10个数,最后剩下四个数,要找出最大的四个数,于是,可以再尾部留下3个数,之前找出最大的一个数,标记其位置。然后继续在尾部留下2个数,从这个以标记的位置加一开始查找最大的数,这个继续下去直到找出最大的四位数为止。
    emmm,这个要扎实代码基础,要熟练掌握标记的方法。
    C++代码:
    #include<iostream>
    #include<cstdio>
    #include<string.h>
    using namespace std;
    int main() {
        char s[110];
        int T;
        cin >> T;
        while (T--) {
            int n;
            memset(s, 0, sizeof(s));
            cin >> s >> n;
            int end = n;
            int len = strlen(s);
            int i = 0;
            int t;
            int flag = 0;
            while (end < len) {
                for (i = flag, t = s[i]; i <= end; i++) {
                    if (s[i] > t) {
                        flag = i;
                        t = s[i];
                    }
                }
                end++;
                flag++;
                printf("%c", t);
            }
            cout << endl;
        }
        //system("pause");
        return 0;
    }
  • 相关阅读:
    齐次坐标的理解
    BLEU (Bilingual Evaluation Understudy)
    tensorflow由于未初始化变量所导致的错误
    Beam Search(集束搜索/束搜索)
    nltk 的分词器punkt: ssl问题无法下载
    文件读写方式的对比
    import tensorflow 报错: tf.estimator package not installed.
    条件式变分自编码机(Conditional Variational Autoencoders)
    GoogLeNet 解读
    卷积的三种模式:full, same, valid
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/10681328.html
Copyright © 2020-2023  润新知