zoukankan      html  css  js  c++  java
  • NYOJ 题目448 寻找最大数

    描述:

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

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

    输入
    第一行输入一个正整数T,表示有T组测试数据
    每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
    输出
    每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
    样例输入
    2
    92081346718538 10
    1008908 5
    样例输出
    9888
    98

    //AC

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    int T,m,len,i,sum;
    scanf("%d",&T);
    while(T--)
    {
    char c[105]={''};//从最后往前面开始找 输出第一个最大值之后 记录其位置
    scanf("%s%d",c,&m);//再从后往前找,不能破坏顺序,故只能到第一个标记地方
    len=strlen(c);
    sum=-1;
    int flag=-1;
    char max='0';
    while(m<len)
    {
    max='0';
    for(i=m;i>flag;i--)
    {
    if(c[i]>=max)
    {
    max=c[i];
    sum=i;
    }
    }
    m++;
    flag=sum;
    printf("%d",max-'0');
    }
    printf(" ");
    }
    return 0;
    }

  • 相关阅读:
    模拟赛12-10
    uva-11235
    中国剩余定理
    待学算法
    A
    动态逆序对
    [BZOJ3011][Usaco2012 Dec]Running Away From the Barn
    题目1007:奥运排序问题(结构体排序)
    题目1006:ZOJ问题(字符串处理)
    题目1005:Graduate Admission(结构体排序)
  • 原文地址:https://www.cnblogs.com/hys1258414454/p/7263403.html
Copyright © 2011-2022 走看看