(Java实现) 洛谷 P1106 删数问题
题目描述
键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小。
输入输出格式
输入格式:
nn (高精度的正整数)
kk(需要删除的数字个数)
输出格式:
最后剩下的最小数。
输入输出样例
输入样例#1:
175438
4
输出样例#1:
13
import java.util.Scanner;
public class shanshuwenti {
public static int Delete(String a,int k)
{
StringBuffer sb=new StringBuffer(a+"");//把a转化为字符串
int i=0,j=0;
for(i=0;i<k;i++)
{
/*
* 若各位数字递增,则删除最后一个数否则删除第一个减区间的数*/
for(j=0;j<sb.length()-1&&sb.charAt(j)<=sb.charAt(j+1);j++)
{
}
sb.delete(j,j+1);
}
return sb.length()==0?0:Integer.parseInt(sb.toString());
}
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
String a=in.next();
int b=in.nextInt();
if(b<=0)
System.exit(0);
System.out.println(Delete(a,b));
}
}