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;
    }

  • 相关阅读:
    UVA 11488 Hyper Prefix Sets (字典树)
    UVALive 3295 Counting Triangles
    POJ 2752 Seek the Name, Seek the Fame (KMP)
    UVA 11584 Partitioning by Palindromes (字符串区间dp)
    UVA 11100 The Trip, 2007 (贪心)
    JXNU暑期选拔赛
    计蒜客---N的-2进制表示
    计蒜客---线段的总长
    计蒜客---最大质因数
    JustOj 2009: P1016 (dp)
  • 原文地址:https://www.cnblogs.com/tp0829/p/8640605.html
Copyright © 2011-2022 走看看