zoukankan      html  css  js  c++  java
  • 贪心3--删数问题

    贪心3--删数问题

    一、心得

     

    二、题目及分析

     

    题目:

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

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

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

    Simple Input
     178543
     4
    Simple Output
     13
     
    思路:
    每一步总是选择一个使剩下的数最小的数字删除,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;否则删除第一个递减区间的首字符,这样删一位便形成了一个新的数字串。然后回到串首,按上述规则再删除下一个数字

    三、代码及结果

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 int main(){
     5     string s;
     6     cin>>s;
     7     int n;
     8     cin>>n;
     9     int len=s.length();
    10     int a[300];
    11     for(int i=0;i<len;i++){
    12         a[i+1]=s[i]-'0';
    13     }
    14     for(int i=1;i<=n;i++){
    15         for(int j=1;j<len;j++){
    16             if(a[j]>a[j+1]){
    17                 for(int k=j;k<len;k++){
    18                     a[k]=a[k+1];
    19                 }
    20                 break;
    21             }
    22         }
    23         len--;
    24     }
    25     for(int i=1;i<=len;i++){
    26         cout<<a[i];
    27     }
    28     cout<<endl;
    29     return 0;
    30 } 

  • 相关阅读:
    MySQL--lsblk命令查看块设备
    MySQL--linux IO调度算法
    一致性哈希
    MySQL--查询表统计信息
    MySQL--区分表名大小写
    MySQL--Online DDL
    MySQL--MODIFY COLUMN和ALTER COLUMN
    MySQL--修改表字段
    MySQL--增加或修改列注释
    鼠标事件
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7130175.html
Copyright © 2011-2022 走看看