P1106 删数问题
作者:互联网
题目描述
键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小。
输入格式
nn (高精度的正整数)
kk(需要删除的数字个数)
输出格式
最后剩下的最小数。
输入输出样例
输入 #1175438 4输出 #1
13
#include<bits/stdc++.h> using namespace std; int a[251],b[251],i,j,q,t=1,k,n,l,m=0,x=0,y=1,u=0; string num; int main(){ cin>>num>>l; n=num.length(); int o=l; k=n-l; for(i=1;i<=n;++i) { a[i]=num[i-1]-'0'; b[i]=9; } while(a[y]==0) { y++; } for(i=y;i<=n;i++) { if(a[i]!=0) m++; if(a[i]==0) { if(m<=l) { l-=m; u+=m; m=0; t=i; } else break; } } while(a[t]==0) { t++; } int kk=n-t+1-o+u; if(kk<=0) cout<<0; else{ for(int j=1;j<=kk;j++) { for(i=t;i<=n;i++) { if(a[i]==0&&n-i+1>=kk-j+1) { b[j]=0; t=i+1; break; } if(a[i]<b[j]&&n-i+1>=kk-j+1) { b[j]=a[i]; t=i+1; } }} for(i=1;i<=kk;i++) { cout<<b[i]; } } }
标签:P1106,正整数,数字,kk,问题,int,删数,num,251 来源: https://www.cnblogs.com/lau1997/p/12589710.html