nyoj448 寻找最大数

寻找最大数

时间限制:1000 ms  |  内存限制:65535 KB
 
描述

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

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

 

 
输入
第一行输入一个正整数T,表示有T组测试数据
每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
输出
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
样例输入
2
92081346718538 10
1008908 5
样例输出
9888
98
算法分析:依次找出所有的值,len为数值的位数,n为要删掉的个数,我就依次找出len-n个数就行了;
View Code
 1 #include<iostream>
2 #include<cstring>
3 #include<string>
4 #include<algorithm>
5 #define N 110
6
7 using namespace std;
8
9 string s;
10
11 string work(int n)
12 {
13 string ans="";
14 int len,i,first,last,test,p;
15 char max;
16 len=s.size();
17 test=len-n;
18 first=0;last=len-test;
19 while(test--)
20 {
21 max='0'-1;
22 for(i=first;i<=last;i++)
23 {
24 if(max<s[i])
25 {
26 max=s[i];
27 p=i;
28 }
29 }
30 ans+=max;
31 first=p+1;last++;
32 }
33 return ans;
34 }
35
36 int main()
37 {
38 int test,n;
39 cin>>test;
40 while(test--)
41 {
42 cin>>s>>n;
43 cout<<work(n)<<endl;
44 }
45 return 0;
46 }
posted @ 2011-11-27 20:50  mtry  阅读(713)  评论(3编辑  收藏  举报