P1106 删数问题

题目连接https://www.luogu.com.cn/problem/P1106

问题分析:根据贪心策略,可找到导致字符串不上升的数字往前移一位即可,依次删除

 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  } 
原文地址:https://www.cnblogs.com/tflsnoi/p/13524963.html