尋找最大數(shù)
時(shí)間限制:1000 ms | 內(nèi)存限制:65535 KB
難度:2
描述
請?jiān)谡麛?shù) n 中刪除m個(gè)數(shù)字, 使得余下的數(shù)字按原次序組成的新數(shù)最大,
比如當(dāng)n=92081346718538,m=10時(shí),則新的最大數(shù)是9888
輸入
第一行輸入一個(gè)正整數(shù)T,表示有T組測試數(shù)據(jù)
每組測試數(shù)據(jù)占一行,每行有兩個(gè)數(shù)n,m(n可能是一個(gè)很大的整數(shù),但其位數(shù)不超過100位,并且保證數(shù)據(jù)首位非0,m小于整數(shù)n的位數(shù))
輸出
每組測試數(shù)據(jù)的輸出占一行,輸出剩余的數(shù)字按原次序組成的最大新數(shù)
樣例輸入
2
92081346718538 10
1008908 5
樣例輸出
9888
98
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<cstring>
#include<functional>
using namespace std;
char str[110];
int Max(int s,int e)
{
char c=str[s];
int index=s;
for(int i=s+1;i<e;i++)
{
if(str[i]>c){
c=str[i];
index=i;
}
}
return index;
}
int main(){
int t,n;
scanf("%d",&t);
while(t--)
{
memset(str,0,sizeof(str));
scanf("%s %d",str,&n);
int len=strlen(str);
int first=0,last=n;
//既然要?jiǎng)h掉m個(gè)數(shù)求最大,可以在前n-m個(gè)數(shù)字中找最大值,然后標(biāo)記找到的數(shù)字的位子,
//假如記為k1吧,然后再k1+1到n-m+1中找第二個(gè)最大的,再標(biāo)記位置
for(int i=0;i<len-n;i++)
{
int temp=Max(first,last);
printf("%c",str[temp]);
first=temp+1;
last++;
}
printf("\n");
}
}