zoukankan      html  css  js  c++  java
  • 寻找最大数

    描述

    请在整数 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 }


  • 相关阅读:
    树的前序 中序 后序遍历
    算法入门经典-第四章 例题4-3 救济金发放
    算法入门经典-第五章 例题6-10 下落的树叶
    排序(三) 选择排序

    printf格式输出总结
    并查集
    异或的应用
    ActionContext详解
    ActionContext表格总结
  • 原文地址:https://www.cnblogs.com/a1225234/p/4470045.html
Copyright © 2011-2022 走看看