[填空题]试题 C: 卡片
本题总分:10 分
【问题描述】
小蓝有很多数字卡片,每张卡片上都是数字 0 到 9。
小蓝准备用这些卡片来拼一些数,他想从 1 开始拼出正整数,每拼一个,就保存起来,卡片就不能用来拼其它数了。
小蓝想知道自己能从 1 拼到多少。
例如,当小蓝有 30 张卡片,其中 0 到 9 各 3 张,则小蓝可以拼出 1 到 10,
但是拼 11 时卡片 1 已经只有一张了,不够拼出 11。
现在小蓝手里有 0 到 9 的卡片各 2021 张,共 20210 张,请问小蓝可以从 1
拼到多少?
提示:建议使用计算机编程解决问题。
【题解】
package mytext;
import java.util.*;
public class task5 {
public static void main(String[] args) {
int a =0;
int b =0;
int c=0;
int d =0;
int e =0;
int f =0;
int g=0;
int h =0;
int i =0;
int j =0;
int number = 2021;
for(int s=0;;s++){
String s1 =s+"";
for(int s2=0;s2<s1.length();s2++){
if(s1.charAt(s2)=='0'){
if(a==number){
System.out.println(s);
return;
}
a++;
}
if(s1.charAt(s2)=='1'){
if(b==number){
System.out.println(s);
return;
}
b++;
}
if(s1.charAt(s2)=='2'){
if(c==number){
System.out.println(s);
return;
}
c++;
}
if(s1.charAt(s2)=='3'){
if(d==number){
System.out.println(s);
return;
}
d++;
}
if(s1.charAt(s2)=='4'){
if(e==number){
System.out.println(s);
return;
}
e++;
}
if(s1.charAt(s2)=='5'){
if(f==number){
System.out.println(s);
return;
}
f++;
}
if(s1.charAt(s2)=='6'){
if(g==number){
System.out.println(s);
return;
}
g++;
}
if(s1.charAt(s2)=='7'){
if(h==number){
System.out.println(s);
return;
}
h++;
}
if(s1.charAt(s2)=='8'){
if(i==number){
System.out.println(s);
return;
}
i++;
}
if(s1.charAt(s2)=='9'){
if(j==number){
System.out.println(s);
return;
}
j++;
}
}
}
}
}
把他的全部可能性给列出来要是那个卡片数量已经用尽代表那个数已经无法拼接直接返回
答案是3181因为他拼不出来3182