• 贪心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 } 

  • 相关阅读:
    STM32 时钟配置分析
    STM32 开发板资源梳理
    STM32 摄像头实验OV2640
    STM32 TFT液晶屏与FSMC
    STM32 开发板电源与供电方式
    视觉里程计07 Qt的一些bug修改记录
    解决wireshark检测不到网卡的问题
    gdb 脚本调试
    [转] GCC 中的编译器堆栈保护技术
    使用gdbserver远程调试
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7130175.html
Copyright © 2020-2023  润新知