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

    题目:

    键盘输入一个高精度的正整数n(<=240位),

    掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。

    编程对给定的n和s,寻找一种方案,使得剩下的数最小。

    Simple Input
     178543
     4
    Simple Output
     13
     
    思路:
    每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字
     
    代码:
    #include<iostream>
    #include<cstring>
    using namespace std;
    
    int main(){
        char s[255];
        int k;
        bool bo[255];
        memset(bo,false,sizeof(bo));
        cin>>s>>k;
        int n=strlen(s);
        while(k--){
            int i,last;
            for(i=0,last=-1;i<n;i++){
                
                if(bo[i])continue;
                if(last!=-1&&s[i]<s[last]){
                    bo[last]=true;
                    cout<<s[last]<<endl;
                    break;
                }
                last=i;
            }
            if(i==n){
                bo[last]=true;
    //            for(int j=n-1;j>=0&&k>0;j--){
    //                if(!bo[j])bo[j]=true,k--;
    //            }
            }
        }
        bool flag=false;
        for(int i=0;i<n;i++){
            if(!bo[i]&&(flag||s[i]!='0'))cout<<s[i],flag=true;
        }
        if(!flag)cout<<0;
        return 0;
    }
  • 相关阅读:
    css引入方式
    HTML标签
    动态导入模块impoerlib
    pymysql连接数据库
    创建数据库表之引擎
    IO多路复用互动聊天,select函数监听
    欧拉筛法求素数个数
    与三角形相关的问题 WITH 有向面积
    时间复杂度的计算
    折半查找
  • 原文地址:https://www.cnblogs.com/FuTaimeng/p/5661421.html
Copyright © 2011-2022 走看看