201803-1 跳一跳

試題編號: 201803-1
試題名稱: 跳一跳
時間限制: 1.0s
內存限制: 256.0MB
問題描述:
問題描述ios

  近來,跳一跳這款小遊戲風靡全國,受到很多玩家的喜好。
  簡化後的跳一跳規則以下:玩家每次從當前方塊跳到下一個方塊,若是沒有跳到下一個方塊上則遊戲結束。
  若是跳到了方塊上,但沒有跳到方塊的中心則得到1分;跳到方塊中心時,若上一次的得分爲1分或這是本局遊戲的第一次跳躍則這次得分爲2分,不然這次得分比上一次得分多兩分(即連續跳到方塊中心時,總得分將+2,+4,+6,+8...)。
  如今給出一我的跳一跳的全過程,請你求出他本局遊戲的得分(按照題目描述的規則)。spa

輸入格式code

  輸入包含多個數字,用空格分隔,每一個數字都是1,2,0之一,1表示這次跳躍跳到了方塊上可是沒有跳到中心,2表示這次跳躍跳到了方塊上而且跳到了方塊中心,0表示這次跳躍沒有跳到方塊上(此時遊戲結束)。blog

輸出格式遊戲

  輸出一個整數,爲本局遊戲的得分(在本題的規則下)。內存

樣例輸入it

1 1 2 2 2 1 1 2 2 0io

樣例輸出class

22stream

數據規模和約定

  對於全部評測用例,輸入的數字不超過30個,保證0正好出現一次且爲最後一個數字。

 

問題連接:CCF201803-1 跳一跳

問題分析:

  一個簡單的序列處理問題。

  輸入到文件結束或最後一個數爲0。

程序說明:

  變量plus用於存儲加分。初值爲0,連續得2分則每次增長2分,若是得1分(沒有跳到中心)則加分變爲0分。

 

提交後得100分的C++語言程序以下:

/* CCF201803-1 跳一跳 */
 
#include <iostream>
 
using namespace std;
 
int main()
{
    int a, sum = 0, plus = 0;
    while(scanf("%d", &a) != EOF && a) {
        sum += a;
        if(a == 1)
            plus = 0;
        else if(a == 2) {
            sum += plus;
            plus += 2;
        }
    }
    printf("%d\n", sum);
 
    return 0;
}
 

下面是個垃圾......

#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std ; 
// 寫了個垃圾出來......... 
#define LL long long 

/*
1表示這次跳躍跳到了方塊上可是沒有跳到中心,
2表示這次跳躍跳到了方塊上而且跳到了方塊中心,
0表示這次跳躍沒有跳到方塊上(此時遊戲結束)。
*/

/*
若是跳到了方塊上,但沒有跳到方塊的中心則得到1分;
跳到方塊中心時,
若上一次的得分爲1分或這是本局遊戲的第一次跳躍則這次得分爲2分,
不然這次得分比上一次得分多兩分
(即連續跳到方塊中心時,總得分將+2,+4,+6,+8...)。
*/

int main() {
    
    LL step = 0 ; 
    LL sum = 0 ; 
    LL up_step = 0 ; 
    int times = 0 ; // 第幾步 
    bool flag = false ; 
    
    while(scanf("%d", &step) && step != 0){
        times ++ ; 
        if(step == 1){
            sum += 1 ;
            up_step = 1 ;  
            flag = false ; 
        }else if(step == 2&&(up_step == 1||times == 1)){
            sum += 2  ; 
            up_step = 2 ; 
            flag = true ; 
        }else if(flag){
            up_step += 2 ; 
            sum += up_step ; 
        }
    }
    
    printf("%d\n", sum) ; 
    
    return 0 ; 
}
相關文章
相關標籤/搜索