CCF CSP 跳一跳 c++ java python 201803_1 100分

CCF CSP 跳一跳 c++ java python 201803_1 100分

問題描述
  近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。
  簡化後的跳一跳規則如下:玩家每次從當前方塊跳到下一個方塊,如果沒有跳到下一個方塊上則遊戲結束。
  如果跳到了方塊上,但沒有跳到方塊的中心則獲得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正好出現一次且爲最後一個數字。
問題分析
  這道題是csp認證的第一題,題目比較簡單易懂,只要控制好邏輯,拿滿分是很簡單的事情。具體代碼如下
c++代碼如下:

#include<cstdio>
#include<vector>
using namespace std;
int main(){
	vector<int> vec;
	int temp;
	scanf("%d",&temp);
	while(temp != 0){
		vec.push_back(temp);
		scanf("%d",&temp);
	}
	int result = 0;
	int flag = 0;
	for(int i = 0;i < vec.size();i++){
		int ff = vec[i];
		if(ff == 1) {
			result += 1;
			flag = 0;
		}
		else {
			if(flag == 0) {
				flag = 1;
				result += (2*flag);
			}
			else {
				flag += 1;
				result += (2*flag);
			}
		}	
	}
	printf("%d\n",result);
	return 0;
}

Java代碼如下:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class csp201803_1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		List<Integer> list = new ArrayList<>();
		int temp = input.nextInt();
		while(temp != 0) {
			list.add(temp);
			temp = input.nextInt();
		}
		int result = 0;
		int flag = 0;
		for(int i = 0;i < list.size();i++) {
			int ff = list.get(i);
			if(ff == 1) {
				result += 1;
				flag = 0;
			}
			else {
				if(flag == 0) {
					flag = 1;
					result += (2*flag);
				}
				else {
					flag += 1;
					result += (2*flag);
				}
			}
		}
		System.out.println(result);
	}
}

python3代碼如下:

if __name__=="__main__":
    temp = input().split(" ")
    li = []
    for i in temp:
        if int(i) != 0:
            li.append(int(i))
    result = 0
    flag = 0
    for i in range(len(li)):
        ff = li[i]
        if ff == 1:
            result += 1
            flag = 0
        else:
            if flag == 0:
                flag = 1
                result += (2 * flag)
            else:
                flag += 1
                result += (2 * flag)
    print(result)

ok!大功告成了,如果你有其他的方法或問題,歡迎在評論區交流!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章