蓝有很多数字卡片,每张卡片上都是数字0到9。
小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数,每拼一个,就保存起水,卡片就不能用来拼其它数了。
小蓝想知道自己能从1拼到多少
很多是多少?无限吗?
卡片数自己改num值就可以了,也可以用Scanner手动输入
package com;
import java.util.LinkedList;
import java.util.List;
public class Text {
public static void main(String[] args) {
//定义卡片数
int num = 50;
System.out.println("卡片数量:"+num);
List list = new LinkedList();
for(int i=0;i<num;i++){
for(int j=0;j<=9;j++){
list.add(j);
}
}
System.out.print("卡片中包含的数字:");
for(int i=0;i<list.size();i++){
if(i%50==0){
System.out.println();
}
System.out.print(list.get(i)+" ");
}
System.out.println("\n\n以上数字可拼出的数字:");
for(int i=0;i>=0;i++){
int a1 = 0;
int a2 = 0;
int a3 = 0;
if(i>=10){
if(i>=100){
a1 = i/100;
a2 = i%100/10;
a3 = i%10;
boolean text1 = fnd(a1,list);
if(!text1){
System.out.print("拼"+(a1*100+a2*10+a3)+"缺"+a1);
break;
}
boolean text2 = fnd(a2,list);
if(!text2){
System.out.print("拼"+(a1*100+a2*10+a3)+"缺"+a2);
break;
}
boolean text3 = fnd(a3,list);
if(!text3){
System.out.print("拼"+(a1*100+a2*10+a3)+"缺"+a3);
break;
}
System.out.print(a1*100+a2*10+a3+" ");
if((a1*100+a2*10+a3)%50==0){
System.out.println();
}
}else{
a1 = i/10;
a2 = i%10;
boolean text1 = fnd(a1,list);
if(!text1){
System.out.print("拼"+(a1*10+a2)+"缺"+a1);
break;
}
boolean text2 = fnd(a2,list);
if(!text2){
System.out.print("拼"+(a1*10+a2)+"缺"+a2);
break;
}
System.out.print(a1*10+a2+" ");
if((a1*10+a2)%50==0){
System.out.println();
}
}
}else{
a1 = i;
boolean text1 = fnd(a1,list);
if(!text1){
System.out.print("拼"+a1+"缺"+a1);
break;
}
System.out.print(a1+" ");
}
}
System.out.print("\n\n剩余数字:");
for(int i=0;i<list.size();i++){
if(i%50==0){
System.out.println();
}
System.out.print(list.get(i)+" ");
}
}
public static boolean fnd(int a, List list){
int ps = -1;
boolean bo = true;
for(int i=0;i< list.size();i++){
if(a==(int)list.get(i)){
ps = i;
}
}
if(ps>=0){
list.remove(ps);
}else{
bo = false;
}
return bo;
}
}