zoukankan      html  css  js  c++  java
  • NYOJ448_寻找最大数【贪心】

    寻找最大数


    时间限制:1000 ms  |  内存限制:65535 KB
    难度:2
    描写叙述
    请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,


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


     


    输入
    第一行输入一个正整数T。表示有T组測试数据
    每组測试数据占一行,每行有两个数n,m(n可能是一个非常大的整数,但其位数不超过100位。而且保证数据首位非0,m小于整数n的位数)
    输出
    每组測试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
    例子输入
    2
    92081346718538 10
    1008908 5
    例子输出
    9888
    98
    来源
    第六届itat复赛B卷2题改编
    上传者

    ACM_赵铭浩


    题目大意:……删去m位数。输出剩余的数字  使新数最大

    思路:贪心思想。设位数为len。删去m位数,输出新数,就是输出新数为len-m位

    依据贪心思想。从最高位開始,每次保证取出来的数字都是最优的。

    比方说7位数,删去3位数。

    应该从第一位到第len-2位上取最大值。这样首先保证最高位

    千位上的结果正确。再从刚才找到值的下一位開始到第len-1位上取最大值。保证百位上

    的结果正确。再从刚才找到值的下一位開始到第len位上取最大值,保证各位上结果正确。

    比方:9456973 4

    由于要删去4个数,所以输出新数为3位。

    从第一位9開始到第7-2=5位,找到千位上的最大值,而且尽可能靠左。

    找到第一位上的

    第一个9。则千位为9。再从第二位4開始到第7-1位,找到百位上的最大值,找到第5位上

    的第二个9。再从第6位開始到第7位,找到个位上的最大值,找到第6位上的7。

    则输出结果为997.


    #include<stdio.h>
    #include<string.h>
    
    char ch[110];
    int main()
    {
        int T,num;
        scanf("%d",&T);
        while(T--)
        {
            memset(ch,0,sizeof(ch));
            getchar();
            scanf("%s %d",ch,&num);
            int len = strlen(ch);
            num = len - num;
            int pos = 0;
            while(num > 0)
            {
                int max = -1;
                int j;
                for(j = pos; j <= len-num; j++)
                {
                    if(ch[j]-'0' > max && ch[j]!='a')
                    {
                        max = ch[j]-'0';
                        pos = j;
                    }
                }
                printf("%c",ch[pos]);
                ch[pos] = 'a';
                num--;
            }
            printf("
    ");
    
        }
        return 0;
    }
    


  • 相关阅读:
    2019牛客暑期多校训练营(第七场)- String
    2019牛客暑期多校训练营(第七场)- Governing sand
    2019 Multi-University Training Contest 6
    2019牛客暑期多校训练营(第六场)- Upgrading Technology
    2019牛客暑期多校训练营(第六场)- Shorten IPv6 Address
    2019牛客暑期多校训练营(第五场)- generator 1
    2019 Multi-University Training Contest 4
    Network POJ
    Candies POJ
    Currency Exchange POJ
  • 原文地址:https://www.cnblogs.com/llguanli/p/7120599.html
Copyright © 2011-2022 走看看