1. 编程解决如下问题(50分)。
请在整数n=742683613984中删除8个数字,使得余下的数字按原次序组成的新数最小。要求如下:
(1)整数n和删除数字的个数“8”在源程序中完成赋值,程序直接输出运行结果;
(2)程序结果输出先后被删除的数字(之间以逗号分隔)和删除后所得的最小数。
(提示:整数n可以以字符数组的方式定义、赋值和处理)
import java.util.Scanner;
public class test_5 {
static long min=Long.MAX_VALUE;
public static void play(int n,int temp[],int[] num,int limit){
if(n==num.length){
String tempStr="";
for(int i=0;i<n;i++)
tempStr+=(temp[i]*num[i]+"").equals("0")?"":temp[i]*num[i]+"";
if(!tempStr.equals("")&&tempStr.length()==(num.length-limit))
if(min>Long.parseLong(tempStr))
min=Long.parseLong(tempStr);
return;
}
for(int i=0;i<2;i++){
temp[n]=i;
int count=0;
for(int j=0;j<n;j++)
if(temp[j]==1){
count++;
}
if(count>num.length-limit)continue;
play(n+1,temp,num,limit);
}
}
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int num[]={7,4,2,6,8,3,6,1,3,9,8,4};
System.out.print("删除几个数:");
int limit=input.nextInt();
int temp[]=new int[num.length];
play(0,temp,num,limit);
System.out.println(min);
}
}