



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第java實(shí)現(xiàn)打磚塊游戲算法一個(gè)打磚塊游戲算法,供大家參考,具體內(nèi)容如下
這里有一個(gè)打磚塊游戲:小明面前有很多磚塊,每個(gè)磚塊上有一個(gè)字符,小明每擊中一個(gè)磚塊,會(huì)產(chǎn)生一個(gè)分值,而總分即這些分值總和。磚塊上的字符可以是數(shù)字,符號(hào)或者字母,每個(gè)字符的規(guī)則如下:
如果擊中的磚塊上是數(shù)字,分?jǐn)?shù)就是數(shù)字的值如果擊中的磚塊上是D,分?jǐn)?shù)就是上一個(gè)分值的兩倍如果擊中的磚塊上是+,分?jǐn)?shù)就是前兩個(gè)分值的和如果擊中的磚塊上是C,則取消上一次成績(jī),之后的統(tǒng)計(jì)中不計(jì)算上一次成績(jī)
寫(xiě)一個(gè)算法,為小明的游戲過(guò)程計(jì)算總成績(jī)。
要求
輸入為兩個(gè)參數(shù),一個(gè)叫blocks,代表一個(gè)字符列表,另一個(gè)叫n,代表列表中字符數(shù)量。
輸出為一個(gè)整數(shù),代表對(duì)給定列表計(jì)算的總成績(jī)。
例子
輸入為:
blocks=[5,-2,4,C,D,9,+,+],n=8
輸出為
27
計(jì)算過(guò)程如下:
第一次打中數(shù)字5,得分5分,總成績(jī)5分
第二次打中數(shù)字-2,得分-2分,總成績(jī)5-2=3分
第三次打中數(shù)字4,得分4分,總成績(jī)3+4=7分
第四次打中字母C,上次成績(jī)作廢,總成績(jī)回到第二次時(shí)的3分
第五次打中字母D,取上次分值-2,乘以2即-4分,總成績(jī)?yōu)?1分。注意之前的C把第三次成績(jī)?nèi)∠耍挥?jì)入計(jì)算,所以再之前的第二次的得分作為上次成績(jī)。
第六次打中數(shù)字9,得9分,總成績(jī)-1+9=8分
第七次打中符號(hào)+,得9-4=5分,總成績(jī)8+5=13分
第八次打中符號(hào)+,得5+9=14分,總成績(jī)14+13=27分
算出總成績(jī)27分
分析過(guò)程略,直接上代碼:
importjava.util.*;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassSolution{
publicstaticinttotalScore(String[]blocks,intn){
if(n=0)return0;
if(blocks.length!=n)return0;
intsum=0;
Integer[]lastScores=newInteger[n];
Arrays.fill(lastScores,0);
ListIntegerscoreList=newArrayList(n);
for(inti=0;ii++){
if("C".equals(blocks[i])){
sum-=lastScores[1];
scoreList.remove(lastScores[1]);
lastScores[1]=scoreList.get(scoreList.size()-1);
lastScores[2]=scoreList.get(scoreList.size()-2);
}else{
lastScores[0]=getScore(blocks[i],lastScores[1],lastScores[2]);
sum+=lastScores[0];
scoreList.add(lastScores[0]);
lastScores[2]=lastScores[1];
lastScores[1]=lastScores[0];
}
}
returnsum;
}
privatestaticintgetScore(Stringmark,intlastScore,intlastScore2){
if(null==mark||"".equals(mark))return0;
if(isInteger(mark)){
returnInteger.parseInt(mark);
}elseif("D".equals(mark)){
returnlastScore*2;
}elseif("+".equals(mark)){
returnlastScore+lastScore2;
}
return0;
}
privatestaticbooleanisInteger(Stringmark){
Patternpattern=Ppile("^-[\\d]+$");
Matchermatcher=pattern.matcher(mark);
returnmatcher.matches();
}
publicstaticvoidmain(String[]args){
String[]blocks={"5","-2","4","C","D","9","+","+"};
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)校清潔工勞動(dòng)協(xié)議書(shū)
- 比亞迪合作辦學(xué)協(xié)議書(shū)
- 約定入股協(xié)議書(shū)
- 糧食存放協(xié)議書(shū)
- 股票授予協(xié)議書(shū)
- 稅費(fèi)處理協(xié)議書(shū)
- 果樹(shù)苗質(zhì)量合同協(xié)議書(shū)
- 廢舊船買(mǎi)賣合同協(xié)議書(shū)
- 節(jié)約水果協(xié)議書(shū)
- 砌體安全協(xié)議書(shū)
- 《小米營(yíng)銷策略》課件
- 2025年咸陽(yáng)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)(名師系列)
- 2024-2025商旅管理市場(chǎng)白皮書(shū)
- 潔牙的操作流程及注意事項(xiàng)
- 外墻保溫培訓(xùn)課件
- 呼吸科護(hù)理進(jìn)修后回院匯報(bào)
- 肺結(jié)節(jié)手術(shù)后護(hù)理查房
- 病案室質(zhì)控管理匯報(bào)
- 2025-2030中國(guó)公募證券投資基金行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)與前景預(yù)測(cè)研究報(bào)告
- 脛腓骨遠(yuǎn)端骨折護(hù)理查房
- 文體部面試題及答案
評(píng)論
0/150
提交評(píng)論