寻找最大数

描述

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

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

 

输入
第一行输入一个正整数T,表示有T组测试数据
每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
输出
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数
样例输入
2
92081346718538 10
1008908 5
样例输出
9888
98

我有一个问题,,为什么我最后用printf("%s",b)输出时就出现错误了??悬赏9.9块钱

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int fmax(int j,char *a,int n)
 6 {
 7     char max='0';
 8     int i;
 9     for(i=j;i<n;i++)
10     {
11         if(a[i]>=max)
12             max=a[i];
13     }
14     for(i=j;max!=a[i];i++);
15     return i;
16 }
17 int main()
18 {
19     int n;
20     scanf("%d",&n);
21     while(n--)
22     {
23         int len=0,j=-1,i=0,k=0,m=0;
24         char a[100];
25         memset(a,'0',sizeof(a));
26         scanf("%s",a);/*scanf%s遇到空格回车tab结束*/
27         scanf("%d",&m);
28         len=strlen(a);
29         char b[len-m];    
30         k=m+1;
31         for(i=0;i<len-m;i++)
32         {    
33             j=fmax(j+1,a,k);
34             b[i]=a[j];
35             k++;
36         }
37         for(i=0;i<len-m;i++)
38             printf("%c",b[i]);
39         printf("\n");
40     }
41 
42 }


posted @ 2015-04-30 22:43  御心飞行  阅读(215)  评论(0编辑  收藏  举报