2023華為OD統(tǒng)一考試(A+B卷)題庫清單-帶答案(持續(xù)更新)or2023年華為OD真題機(jī)考題庫大全-帶答案(持續(xù)更新)
玩牌高手
給定一個長度為n的整型數(shù)組,表示一個選手在n輪內(nèi)可選擇的牌面分?jǐn)?shù)。選手基于規(guī)則選牌,請計(jì)算所有輪結(jié)束后其可以獲得的最高總分?jǐn)?shù)。選擇規(guī)則如下:
1、在每輪里選手可以選擇獲取該輪牌面,則其總分?jǐn)?shù)加上該輪牌面分?jǐn)?shù),為其新的總分?jǐn)?shù)。
2、選手也可不選擇本輪牌面直接跳到下一輪,此時將當(dāng)前總分?jǐn)?shù)還原為3輪前的總分?jǐn)?shù),若當(dāng)前輪次小于等于3(即在第1、2、3輪選擇跳過輪次),則總分?jǐn)?shù)置為0。
3、選手的初始總分?jǐn)?shù)為0,且必須依次參加每一輪。
收起
輸入描述:
第一行為一個小寫逗號分割的字符串,表示n輪的牌面分?jǐn)?shù),1<= n <=20。
分?jǐn)?shù)值為整數(shù),-100 <= 分?jǐn)?shù)值 <= 100。
不考慮格式問題。
輸出描述:
所有輪結(jié)束后選手獲得的最高總分?jǐn)?shù)。
示例1
輸入
1,-5,-6,4,3,6,-2
輸出
11
說明
總共有7輪牌面。
第一輪選擇該輪牌面,總分?jǐn)?shù)為1。
第二輪不選擇該輪牌面,總分?jǐn)?shù)還原為0。
第三輪不選擇該輪牌面,總分?jǐn)?shù)還原為0。
第四輪選擇該輪牌面,總分?jǐn)?shù)為4。
第五輪選擇該輪牌面,總分?jǐn)?shù)為7。
第六輪選擇該輪牌面,總分?jǐn)?shù)為13。
第七輪如果不選擇該輪牌面,則總分?jǐn)?shù)還原到3輪1前分?jǐn)?shù),即第四輪的總分?jǐn)?shù)4,如果選擇該輪牌面,總分?jǐn)?shù)為11,所以選擇該輪牌面。文章來源:http://www.zghlxwxcb.cn/news/detail-648318.html
因此,最終的最高總分為11。文章來源地址http://www.zghlxwxcb.cn/news/detail-648318.html
public class PlayCards {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> cards = Arrays.stream(sc.nextLine().split(",")).map(Integer::parseInt)
.collect(Collectors.toList());
int endScore = maxScore(cards);
System.out.println(endScore);
}
public static int maxScore(List<Integer> cards){
//若當(dāng)前輪次小于等于3(即在第1、2、3輪選擇跳過輪次),則總分?jǐn)?shù)置為0。
int max = 0;
for (int i = 0; i < cards.size(); i++){
//大于0的累計(jì)值
if (cards.get(i) >= 0){
max += cards.get(i);
} else if (i > 2) {
//當(dāng)前值跟前三輪值比較,看是返回值,還是累計(jì)當(dāng)前值
max = Math.max(max + cards.get(i),cards.get(i-3));
}else {
max = Math.max(max + cards.get(i),0);
}
}
return max;
}
}
到了這里,關(guān)于華為OD真題---玩牌高手--帶答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!