zoukankan      html  css  js  c++  java
  • 4.6算法之贪心-3528:最小新整数

    描述

    给定一个十进制正整数n(0 < n < 1000000000),每个数位上数字均不为0。n的位数为m。
    现在从m位中删除k位(0<k < m),求生成的新整数最小为多少?
    例如: n = 9128456, k = 2, 则生成的新整数最小为12456

    输入第一行t, 表示有t组数据;
    接下来t行,每一行表示一组测试数据,每组测试数据包含两个数字n, k。输出t行,每行一个数字,表示从n中删除k位后得到的最小整数。样例输入

    2
    9128456 2
    1444 3
    

    样例输出

    12456
    1

    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[10];
        int b[10],len,i,t,k,j,p,q;
        scanf("%d",&t);
        for(j=1;j<=t;j++)
        {
            memset(b,-1,sizeof(b));
            scanf("%s",a);
            scanf("%d",&k);
            len=strlen(a);
            for(i=1;i<=len;i++)
                b[i]=a[i-1]-'0';
            for(p=1;p<=k;p++)
                for(i=1;i<=len;i++)
                {
                    if(i==len)
                    {
                        len--;
                        break;
                    }
                    if(b[i]>b[i+1])
                    {
                        for(q=i;q<len;q++)
                            b[q]=b[q+1];
                        len--;
                        break;
                    }
                }
            for(i=1;i<=len;i++)
                if(b[i]>0)
                    printf("%d",b[i]);
            printf("
    ");
        }
    return 0;
    }
  • 相关阅读:
    605
    603
    509
    7-5
    6-5
    5-6
    5-3
    5-4
    5-5
    4-12
  • 原文地址:https://www.cnblogs.com/MicahelOD/p/6079314.html
Copyright © 2011-2022 走看看