Java练习题(卡片)

思路:

先拼从1-9,拼完之后,剩下2020张1-9的卡片,剩下2021张0 的卡片

两种解法思路:

1、遍历循环、暴力解法

2、找特殊规律,不难发现,最先花完的是1号卡片,所以只要锁死1号卡片就可以了

方法1:

        int A0=2021;
        int A1=2021;
        int A2=2021;
        int A3=2021;
        int A4=2021;
        int A5=2021;
        int A6=2021;
        int A7=2021;
        int A8=2021;
        int A9=2021;
        int jg=0;
        String a = "";
        for(int i=1;i<=20210;i++) {
            if(A0==0) {
                break;
            }
            else if(A1==0) {
                break;
            }
            else if(A2==0) {
                break;
            }
            else if(A3==0) {
                break;
            }
            else if(A4==0) {
                break;
            }
            else if(A5==0) {
                break;
            }
            else if(A6==0) {
                break;
            }
            else if(A7==0) {
                break;
            }
            else if(A8==0) {
                break;
            }
            else if(A9==0) {
                break;
            }
            else {
            a=i+"";
            }
        for(int k=0;k<a.length();k++) {
            if(a.charAt(k)=='0') {
                    A0-=1;
            }
            else if(a.charAt(k)=='1') {
                    A1-=1;
            }
            else if(a.charAt(k)=='2') {
                    A2-=1;
            }
            else if(a.charAt(k)=='3') {
                    A3-=1;
            }
            else if(a.charAt(k)=='4') {
                    A4-=1;
            }
            else if(a.charAt(k)=='5') {
                    A5-=1;
            }
            else if(a.charAt(k)=='6') {
                    A6-=1;
            }
            else if(a.charAt(k)=='7') {
                    A7-=1;
            }
            else if(a.charAt(k)=='8') {
                    A8-=1;
            }
            else {     
                    A9-=1;    
            }
        jg=i;
}
            }
System.out.println(jg); 

方法2:

int count=0;
        for (int i = 1; i < 20210; i++) {
            String str=i+"";
            for (int j = 0; j < str.length(); j++) {
                if(str.charAt(j)=='1')
                {
                    count++;
                }
            }
            if(count==2021)
            {
                System.out.println(str);
                break;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值