zoukankan      html  css  js  c++  java
  • JDOJ 2898 删数问题

    洛谷 P1106 删数问题

    https://www.luogu.org/problemnew/show/P1106

    JDOJ 2898: 删数问题

    https://neooj.com:8082/oldoj/problem.php?id=2898

    Description

    输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。
    输出新的正整数。(N不超过240位)输入数据均不需判错。

    Input

    【输入】
       n
       s

    Output

      最后剩下的最小数。

    Sample Input

    175438 4

    Sample Output

    13

    HINT

    例如:n=175438
               s=4
              删数的过程如下:
                   n=175438        //删掉7
                       15438          //删掉5
                       1438            //删掉4
                       138              //删掉8
                       13                //解为13

     一道高精度加贪心的题。

    这题的贪心策略就是怎么删除数字才能保证剩下的数最小。

    原则上选择删除最大的数,但是明显不行。

    如果把各位上的数做一个函数图象的话,应该删除峰顶的数,而且越靠前越好。

    贪心原则出来了,接下来就是高精度的代码实现。

    本人高精度很弱。

    所以笨了吧唧地写出的代码,丑到不行。

    但是钻了个空子,还是C语言榜单第一。

    AC CODE:

    #include<stdio.h>
    #include<string.h>
    char c[260];
    int s,cnt;
    int main()
    {
        scanf("%s%d",c,&s);
        int len=strlen(c);
        while(s--)
        {
            for(int i=0;i<=len-2;i++)
                if(c[i]>c[i+1])
                {
                    for(int j=i;j<=len-2;j++)
                        c[j]=c[j+1];
                    break;
                }
            len--;
        }
        while(cnt<=len-1 && c[cnt]=='0')
            cnt++;
        if(cnt==len)
            printf("0");
        else
            for(int j=cnt;j<=len-1;j++)
                printf("%c",c[j]); 
        return 0;
    } 
  • 相关阅读:
    scss-变量分隔符
    scss-声明变量与引用
    scss-入门
    关于动画框架类注意的点点滴滴03
    关于动画框架类注意的点点滴滴02
    关于动画框架类注意的点点滴滴01
    简单的form表单
    简易自定义下拉菜单 与简易默认下拉html片段
    有边框的简易表格
    css模仿表格 居中
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11221014.html
Copyright © 2011-2022 走看看