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

    删数问题

    Time Limit: 1000 ms Memory Limit: 65536 KiB

    Problem Description

     键盘输入一个高精度的正整数n(≤100位),去掉其中任意s个数字后剩下的数字按照原来的左右次序组成一个新的正整数。编程对给定的n与s,寻找一种方案,使得剩下的数字组成的新数最小。

    Input

      输入有多组 每组包括原始数n,要去掉的数字数s;

    Output

     输出去掉s个数后最小的数

    Sample Input

    178543  4

    Sample Output

    13

    Hint

     

    Source

     
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     string str;
     6     int n;
     7     while(cin>>str>>n){
     8         bool flag=false;
     9         for(int i=0;i<n;i++){//删除n位
    10             int k=0;
    11             while(str[k]<=str[k+1]&&k<(int)str.size())//找到一位 a[k]>a[k+1] 高位大于低位
    12                 k++;//未找到 一直往后走  ,就是删除 最后的 一位 递增的情况
    13             str.erase(k,1);//删除 这个 大的高位
    14         }
    15         int len=str.size();//记录字符串的长度
    16         for(int i=0;i<len;i++){ //若 最后  i==len-1 说明全为0
    17             if(str[i]!='0') flag=true;//删除前导0   标记是否有前导0
    18             if(flag){
    19                 cout<<str.substr(i)<<endl;
    20                 break;
    21             }else if(!flag&&i==len-1)//全为0
    22                 cout<<"0"<<endl;
    23         }
    24     }
    25     return 0;
    26 }
    若是升序,则删除升序的最后一个,若是降序,则删除第一个
    从高位到低位看,如果高位大于低位,那么删掉高位的数
    如果是递增的数,那么就删最后一位;位数变少,数字也会比删其他的要少;例如:123456
     
     
  • 相关阅读:
    mongodb 介绍
    mysql+mencached 大规模web应用程序首选
    Hadoop 安装部署
    Hadoop 快速入门
    盘点十大热门Linux服务器发行版
    NoSQL数据库探讨之一 - 为什么要用非关系数据库?
    也谈IT企业发展模式
    linux中的分区与格式化(五)
    linux文件系统维护(四)
    Meta标签详解(转)
  • 原文地址:https://www.cnblogs.com/NirobertEinteson/p/11923881.html
Copyright © 2011-2022 走看看