• 高精度整数去位去最小问题


    Description
    键盘输入一个高精度的正整数N,去掉其中任意M个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的N和M寻找一种方案使得剩下的数字组成的新数最小。输出组成的新的正整数。(不超过240位) 输入数据均不需判错。如果去掉了某几个位后得到的新整数开头为0,保留0。
    Input
    本题有多组测试数据,每组测试数据占一行。一个高精度正整数N(N不超过240位)一个正整数M。(M为不大于N的长度的正整数) N,M由一个空格分开。
    Output
    新的正整数,每组数据的输出占一行。不要多余的空白

    Sample Input

    456547 1
    456547 2
    103 1

    Sample Output

    45547
    4547
    03





    主要运用贪心算法,每一位上的数字尽可能小就满足

    #include<stdio.h>
    #include<string.h>
    void main()
    {
    char s[250];
    int n;
    while(scanf("%s %d",s,&n)!=EOF)
    {
    int i,k=strlen(s);
    if(k==n){printf("0 ");continue;}
    while(n)
    {
    int j=0;
    for(i=0;i<k-1;i++)
    if(s[i]>s[i+1])
    {
    for(j=i;j<k-1;j++)
    s[j]=s[j+1];
    k--;
    j=-1;
    break;
    }
    if(j!=-1)k--;
    n--;
    }
    for(i=0;i<k;i++)printf("%c",s[i]);
    printf(" ");
    }
    }

  • 相关阅读:
    js调试技巧
    Java编程技巧——构建器
    java设计模式:工厂方法模式(Factory Method)
    23种设计模式导航
    java设计模式:单例模式(Singleton Pattern)
    迭代器与生成器
    装饰器
    文件操作的说明与使用
    函数命名、调用小技巧
    各类型数据的操作方法
  • 原文地址:https://www.cnblogs.com/zhang20115330/p/3193035.html
Copyright © 2020-2023  润新知