输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后,剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
标签:namespace led EDA i++ 注意 描述 图片 show play
输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后,剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
第1行:一个正整数n;
第2行:s(s<n的位数).
最后剩下的最小数。
175438
4
13
从左到右遍历,以找到最长递增序列的末位,删除该数字,并把后面的往前移动一位,重复操作s次
注意结果是0的情况!
1 #include <bits/stdc++.h> 2 3 using namespace std; 4 typedef long long ll; 5 6 int main() 7 { 8 string s; 9 int k; 10 cin>>s>>k; 11 int n=s.size(),j; 12 for(int i=0;i<k;i++) 13 { 14 for(j=0;j<n-1-i;j++) 15 { 16 if(s[j]>s[j+1]){ 17 break; 18 } 19 } 20 for(;j<n-1-i;j++) 21 s[j]=s[j+1]; 22 } 23 int cnt=0; 24 while(s[cnt]==‘0‘&&cnt<n-k) 25 { 26 cnt++; 27 } 28 if(cnt==n-k) 29 cout<<"0"<<endl; 30 else 31 { 32 for(int i=cnt;i<n-k;i++) 33 cout<<s[i]; 34 cout<<endl; 35 } 36 return 0; 37 }
标签:namespace led EDA i++ 注意 描述 图片 show play
原文地址:https://www.cnblogs.com/scott527407973/p/9400425.html