原題目:點選打開連結 描述
請在整數 n 中删除m個數字, 使得餘下的數字按原次序組成的新數最大,
比如當n=92081346718538,m=10時,則新的最大數是9888
輸入
-
第一行輸入一個正整數T,表示有T組測試資料
每組測試資料占一行,每行有兩個數n,m(n可能是一個很大的整數,但其位數不超過100位,并且保證資料首位非0,m小于整數n的位數)
輸出 - 每組測試資料的輸出占一行,輸出剩餘的數字按原次序組成的最大新數 樣例輸入
-
2 92081346718538 10 1008908 5
樣例輸出 -
9888 98
#include <iostream>
#include <string.h>
using namespace std;
char c[101];
int main(){
int T,n,m,k;
cin>>T;
while(T--){
cin>>c>>m;
n=strlen(c);
k=n-m;//将問題轉化為取出k=n-m為數,使其最大
int begin =0,end=n-k,index=0,num,Max=-1;
for(int i=0;i<k;i++){
for(int j=begin ;j<=end;j++){//周遊數組,注意開始和結束位置的改變
num=c[j]-'0';
if(num>Max){//不要寫>=,因為最大數字有多個,我們去最左邊的那個
Max=num;
index=j;
}
}
cout<<Max;
Max=-1;
begin=index+1;//注意是index+1;
end++;
}
cout<<endl;
}
return 0;
}