- 描述
-
请在整数 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(" "); 40 } 41 42 }