20190301跳一跳(Java、C++、Python)
阿新 • • 發佈:2018-11-23
問題描述
近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。
簡化後的跳一跳規則如下:玩家每次從當前方塊跳到下一個方塊,如果沒有跳到下一個方塊上則遊戲結束。
如果跳到了方塊上,但沒有跳到方塊的中心則獲得1分;跳到方塊中心時,若上一次的得分為1分或這是本局遊戲的第一次跳躍則此次得分為2分,否則此次得分比上一次得分多兩分(即連續跳到方塊中心時,總得分將+2,+4,+6,+8…)。
現在給出一個人跳一跳的全過程,請你求出他本局遊戲的得分(按照題目描述的規則)。
輸入格式
輸入包含多個數字,用空格分隔,每個數字都是1,2,0之一,1表示此次跳躍跳到了方塊上但是沒有跳到中心,2表示此次跳躍跳到了方塊上並且跳到了方塊中心,0表示此次跳躍沒有跳到方塊上(此時遊戲結束)。
輸出格式
輸出一個整數,為本局遊戲的得分(在本題的規則下)。
樣例輸入
1 1 2 2 2 1 1 2 2 0
樣例輸出
22
資料規模和約定
對於所有評測用例,輸入的數字不超過30個,保證0正好出現一次且為最後一個數字。
問題分析
模擬微信遊戲“跳一跳”,輸入的數是整數(使用hasnextInt()判斷),並且只能是1,2和0,且輸入0意味著遊戲結束。若輸入為2,則需要引入boolean型變數判斷2前方的元素是1還是2,如果是1的話,此次得分為2,若前方元素是2,則此次得分為4。若輸入0則break跳出迴圈。
- Java版本
import java.security.acl.LastOwnerException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { static Scanner sc; //輸入流 static int score; //得分 static int time; //總次數 static boolean lastTimeIsOne=false; //判斷最後一個數是否是1 static int currentScore=0; //此次得分 public static void main(String[] args) { sc=new Scanner(System.in); while(sc.hasNextInt()){ time++; int st=sc.nextInt(); if(st==1){ score++; lastTimeIsOne=true; currentScore=1; } else if(st==2){ if(time==1||lastTimeIsOne){ currentScore=2; }else{ currentScore+=2; } score+=currentScore; lastTimeIsOne=false; } else if(st==0){ lastTimeIsOne=false; break; } } System.out.println(score); } }
- C++版本
#include<bits/stdc++.h> using namespace std; int main(){ int a=1,score=0,num=0;//a儲存輸入資料,score為最終得分,num為連跳方塊中心次數 while(~scanf("%d",&a)&&a!=0)//資料輸入還沒完成且a!=0 if(a==1){//如果a==1 score+=a;//加上1分 num=0;//連跳方塊中心次數歸零 }else if(a==2)//a==2 score+=2*(++num);//遞增連跳方塊中心次數,得分為該次數乘2 printf("%d",score); return 0; } --------------------- 轉自:https://blog.csdn.net/richenyunqi/article/details/80210760
- Python版本
sore,boostsore = 0,2
nums=list(input().split())
for i in nums:
if i == '1':
sore += 1
boostsore = 2
elif i == '2':
sore = sore + boostsore
boostsore += 2
elif i == '0':
break
print(sore)
---------------------
轉自:https://www.cnblogs.com/mehome/p/9530693.html