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 } 

  • 相关阅读:
    后海日记(8)
    后海日记(8)
    后海日记(7)
    后海日记(7)
    hadoop自己写的最高温度程序源码
    hadoop自己写的最高温度程序源码
    20张图为您讲述磁盘发展史
    20张图为您讲述磁盘发展史
    2017"百度之星"程序设计大赛
    汕头市赛srm1X T3
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/7130175.html
Copyright © 2011-2022 走看看