寻找最大数(贪心)

 

寻找最大数

时间限制: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
题意:寻找局部最大解;
代码:
 1 #include<stdio.h>
 2 #include<string.h>
 3 char n[110];
 4 void find(int x){
 5     int t=strlen(n),y,temp=0,i;
 6     char max;
 7     y=t-x;
 8     while(y--){max='0';
 9         for(i=temp;i<t-y;i++){
10             if(n[i]>max)max=n[i],temp=i+1;
11         }
12         printf("%c",max);
13     }
14 }
15 int main(){
16     int T,m;
17     scanf("%d",&T);
18     while(T--){
19         scanf("%s%d",n,&m);
20         find(m);puts("");
21     }
22     return 0;
23 }

 

 
posted @ 2015-07-31 11:29  handsomecui  阅读(360)  评论(0编辑  收藏  举报