贪心 - bailian4137:最小新整数

Posted zhangyue123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心 - bailian4137:最小新整数相关的知识,希望对你有一定的参考价值。

题目链接

http://bailian.openjudge.cn/practice/4137/
这个题目原本以为选出前k大的数删除就可以得到正确结果,但是这种策略是错的,举一个反例:52376 2,如果取出7 6,得到523,显然还有更小的数 236。
正确的贪心策略是从左到右每次选取一个比后一位大的数,删除,进行k次,如果所有数字是增序的,就删除最后一个数字。

解题代码

#include <cstdio>
#include <cstring>
char s[15];
int m;

int main(){
    int t;
    scanf("%d", &t);
    while(t--){
        scanf("%s %d", s, &m);
        int l = strlen(s);
        while(m--){
            for(int i = 0; i < l; i++){
                if(s[i] > s[i+1]){
                    for(int j = i; j < l; j++){
                        s[j] = s[j+1];
                    }
                    break;
                }
            }
            l--;
        }
        printf("%s
", s);
    }
    return 0;
}

以上是关于贪心 - bailian4137:最小新整数的主要内容,如果未能解决你的问题,请参考以下文章

4.6算法之贪心-3528:最小新整数

Bailian4005 拼点游戏贪心

Bailian4005 拼点游戏贪心

Bailian3470 整理扑克牌贪心+二分

Bailian3470 整理扑克牌贪心+二分

算法与编程:删去K个数字后的最小值问题(贪心算法与栈)