您的位置:首页 > 其它

nyoj 448 寻找最大数

2015-01-08 12:58 211 查看

寻找最大数

时间限制: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


好难受,因为马虎错了好几次。本题思路就是!依次!寻找l-m个最大值,当然找第一个时千万要记着从第0项到第l-m项(举个数自己好好想,想明白就会了),找到第一个最大值s[i]输出之后,接下来只需从i+1开始(题目要求按次序)找下一个最大值(和找第一个一样,记着不是简单的找到最后一项),找够l-m即可。


#include<stdio.h>
#include<string.h>
int main()
{
    int n,m;
    int i,j,l;
    int weishu;
    int k,t;
    char s[110],max;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s %d",&s,&m);
        l=strlen(s);
        weishu=l-m;
        k=t=0;
        for(j=weishu;j>=1;j--)
        {
            t=k;
            for(i=k,max=s[i];i<=l-j;i++)
            {
                if(s[i]>max)
                {
                    max=s[i];
                    t=i;
                }
            }
            k=t+1;
            printf("%c",max);
        }
        printf("\n");
    }
    return 0;
}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: