第十二届蓝桥杯省赛:试题 A: 卡片(Java)
生活随笔
收集整理的這篇文章主要介紹了
第十二届蓝桥杯省赛:试题 A: 卡片(Java)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本題總分:5 分
【問題描述】
小藍(lán)有很多數(shù)字卡片,每張卡片上都是數(shù)字0到9。
小藍(lán)準(zhǔn)備用這些卡片來拼一些數(shù),他想從1開始拼出正整數(shù),每拼一個(gè),就保存起來,卡片就不能用來拼其它數(shù)了。
小藍(lán)想知道自己能從1拼到多少。
例如,當(dāng)小藍(lán)有30張卡片,其中0到9各3張,則小藍(lán)可以拼出1到10,但是拼11時(shí)卡片1已經(jīng)只有一張了,不夠拼出11。
現(xiàn)在小藍(lán)手里有0到9的卡片各2021張,共20210張,請(qǐng)問小藍(lán)可以從1拼到多少?
【答案提交】
這是一道結(jié)果填空的題,你只需要算出結(jié)果后提交即可。本題的結(jié)果為一個(gè)整數(shù),在提交答案時(shí)只填寫這個(gè)整數(shù),填寫多余的內(nèi)容將無法得分。
【思路】
從1開始拼,判斷每次拼的數(shù)字各位的數(shù)字還有沒有卡片,沒有就結(jié)束。
【Java代碼】
public class Cards {public static void main(String[] args) {//創(chuàng)建并初始化卡片集數(shù)組int[] cases = new int[10];for (int i = 0; i < cases.length; i++) {cases[i] = 2021;}//設(shè)置變量,num表示當(dāng)前正在拼的數(shù),temp和flag均是一個(gè)臨時(shí)變量int num;int temp;boolean flag = false;//從1開始拼for(num = 1;;num++) {//對(duì)正在拼的這個(gè)數(shù),看其每一位是什么數(shù)字,如果卡片集數(shù)組中還有就-1,沒有就跳出循環(huán),結(jié)束temp = num;while(temp != 0) {if (cases[temp % 10] == 0) {flag = true;break;}cases[temp % 10]--;temp /= 10;}//沒有相應(yīng)的卡片可以拼了,退出循環(huán),結(jié)束if (flag) {break;}}//輸出可以拼的個(gè)數(shù),記得num是當(dāng)前正在拼的,它是拼不成功的,所以只能拼到前一個(gè)System.out.println(--num);} }【結(jié)果】
3181
總結(jié)
以上是生活随笔為你收集整理的第十二届蓝桥杯省赛:试题 A: 卡片(Java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 倍福嵌入式控制器PLC各型号简介
- 下一篇: 第十二届蓝桥杯A组省赛填空题Java思路