【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 }

输入输出:

???花式疑惑

 

 

 

 

 
posted @ 2020-08-19 09:06  九州霜  阅读(180)  评论(0编辑  收藏  举报