题目连接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 }