【问题描述】
键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
输入
两行
第一行:n
第二行:s
输出
最后剩下的最小数。
样例输入
175438 4
样例输出
13
对于一个单调递增的数列如:先删除递减的元素 如果还有要删除的数直接从队尾删除 所得结果就为最小
1 2 3 4 5
我们就要从尾部开始删除
对于一个单调递减的数列如:
5 4 3 2 1
我们从头部开始删除
那么对于一个无序随机数列如
1 7 5 4 3 8
#include<bits/stdc++.h> using namespace std; char a[250],b[250]; int n,ii,s; int main(){ cin>>a>>n; int l=strlen(a); for(int i=0;i<l-n;i++) { int Min=60; for(int j=s;j<=n+i;j++) { if(a[j]<Min) { Min=a[j]; s=j+1; b[i]=Min; } } } while(b[0]=='0') { for(int i=0;i<l-1;i++) { b[i]=b[i+1]; } l--; } cout<<b<<endl; return 0; }
标签:删除,NOI1994,样例,问题,int,删数,250 From: https://www.cnblogs.com/XdzxBo/p/16592855.html