zoukankan      html  css  js  c++  java
  • 【C++】CCFCSP201803-1跳一跳

    //
    //  main.cpp
    //  CCFCSP20180318_1_跳一跳
    //
    //  Created by T.P on 2018/3/23.
    //  Copyright © 2018年 T.P. All rights reserved.
    //
    /*
    跳一跳 1.0s 256.0MB
     问题描述:
       近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。
       简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。
       如果跳到了方块上,但没有跳到方块的中心则获得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正好出现一次且为最后一个数字。
    */
    
    #include <iostream>
    using namespace std;
    int main(){
        int a=0;
        int b=0;
        int c=1;
        int s=0;
        int s2=0;
    stop:
        while(c!=0){
            cin>>a;
            if(a!=0){
                if(a==1)
                    s=s+1;
                else{
                    if(b==2){
                        s2=s2+2;
                        s=s+s2;
                    }
                    else{
                        s2=2;
                        s=s+2;
                    }
                }
            }
            else{
                c=0;
                goto stop;
            }
            cin>>b;
            if(b!=0){
                if(b==1)
                    s=s+1;
                else{
                    if(a==2){
                        s2=s2+2;
                        s=s+s2;
                    }
                    else{
                        s2=2;
                        s=s+2;
                    }
                }
            }
            else{
                c=0;
                goto stop;
            }
        }
        cout<<s<<endl;
        return 0;
    }
    

    ### 改进(递归实现) ``` // // main.cpp // CCFCSP20180318_1_跳一跳(递归实现) // // Created by T.P on 2018/3/23. // Copyright © 2018年 T.P. All rights reserved. //

    include

    using namespace std;
    int tyt(int &s,int &b){ //递归函数
    int a;
    cin>>a; //默认输入没有错误,即0,1,2
    if (a1){ //0没有跳到、1跳到但不是正中心、2跳到且是正中心
    s=s+1;
    b=0;
    tyt(s,b);
    }
    if (a
    2){
    b=b+2;
    s=s+b;
    tyt(s,b);
    }
    return s; //其他情况(包含了0)
    }
    int main(){
    int s=0;
    int b=0;
    s=tyt(s,b);
    cout << s << endl;
    return 0;
    }

  • 相关阅读:
    利用序列化进行深度克隆
    原型链
    本地储存cookie,localStorage,sessionStorage
    ES6创建类
    hexo基本命令
    mouseent和mouseover的区别
    Event
    offset,client,scroll
    字符串的常用方法
    数组去重
  • 原文地址:https://www.cnblogs.com/tp0829/p/8640605.html
Copyright © 2011-2022 走看看