zoukankan      html  css  js  c++  java
  • 【TFLSnoi李志帅】第三篇文章---问题记录

    P1106 删数问题

    提交48.03k
    通过12.27k
    时间限制1.00s
    内存限制125.00MB

    标签

     
     查看算法标签
    进入讨论版

    相关讨论

     查看讨论

    推荐题目

     查看推荐
     洛谷推荐
     展开

    题目描述

    键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小。

    输入格式

    nn (高精度的正整数)

    kk(需要删除的数字个数)

    输出格式

    最后剩下的最小数。

    输入输出样例

    输入 #1
    175438 
    4
    
    输出 #1
    13


    ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
    分析
    本题属于贪心,其算法思想是每一个局部问题都要得出最优解,从而得到全局最优解

    老师代码:
     1  #include<bits/stdc++.h>
     2   using namespace std;
     3   char n[250];
     4   int s;
     5   int main()
     6   {
     7       cin>>n>>s;
     8       int len=strlen(n);              //获取字符数组的长度 
     9      while(s--){
    10          for(int i=0; i<len; i++)
    11              if(n[i]>n[i+1]){        //出现降序数字直间删掉 
    12                  for(int j=i; j<len; j++){
    13                      n[j]=n[j+1];
    14                  } 
    15                  break;
    16              }
    17          len--;                      //删掉后字符长度减一 
    18      }
    19      
    20      //注意以下两种情况的特判 
    21      while(n[0]=='0'){   //删除若干字符后,可能会出现字符串首有若干0如:10002344  2 
    22          for(int j=0; j<len; j++)
    23              n[j]=n[j+1];
    24          len--;
    25      }
    26          
    27      if(strlen(n)==0)cout<<0;   //所有数字都被删除完了  如输入 1234  4 
    28      else cout<<n;        
    29      
    30      return 0;
    31   } 

    输入输出:

    ————————————————————————————————————————————————————————————————————————

    我的代码:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int main()
     4 {
     5     char a[300];
     6     int s,k;
     7     cin>>a>>k;
     8     s=strlen(a);
     9     while(k--)
    10     {
    11         for(int i=0;i<s;i++)
    12             if(a[i]>a[i+1])
    13             {
    14                 for(int j=i;j<s;j++)
    15                 a[i]=a[i+1];
    16                 break;
    17             }        
    18         s--;
    19     }
    20     while(a[0]=='0')
    21     {
    22         for(int j=0;j<s;j++)a[j]=a[j+1];
    23         s--;
    24     }
    25     if(s<1)cout<<"0";
    26     else 
    27     for(int i=0;i<s;i++)cout<<a[i];
    28     return 0;
    29 }

    输入输出:

    ???花式疑惑

     
  • 相关阅读:
    Java内部类与外部类的那些事
    TCP那些事
    Java的垃圾回收和内存分配策略
    HTTP的客户端识别与cookie机制
    HTTP缓存
    HTTP连接管理
    Java Native Interface 六JNI中的异常
    Java Native Interface 五 JNI里的多线程与JNI方法的注册
    Java Native Interface 四--JNI中引用类型
    Java Native Interfce三在JNI中使用Java类的普通方法与变量
  • 原文地址:https://www.cnblogs.com/TFLSc1908lzs/p/13527300.html
Copyright © 2011-2022 走看看