zoukankan      html  css  js  c++  java
  • 赛跑游戏

    任尼乐公司开发了一个适合儿童的简单赛跑游戏。游戏规则是,在规定格数的跑道上,A、B两个角色同时从起点(下标为0的格)向终点跑去,二者跑出的步数是相同的,但是,不长不一定相同。A、B每走一步之前,通过掷骰子决定该步的步长是多少。例如A某步的骰子点数为3,则A从当前位置往终点方向走3格。某些格设有奖励或惩罚值,如果某次根据骰子点数走步恰好落在该格,则马上根据奖惩格数,前进或后退相应的格数。为了避免死循环,规定不连续奖励或惩罚,即在某一次走步中只奖励或惩罚一次。譬如,前进4格后,那个格上有后退4格的惩罚,这样就进入了死循环。 现给定A、B的各步跨出的格数,请计算比赛的结果。比赛结果只有4种情况:A胜,B胜,都未到达终点,A、B以相同的步数到达终点。 注意,长度为n的跑道上,格子的下标是从0开始,终点是下标为n-1的那个格子。先到达或越过终点者为胜。
    输入
    第一行的整数,表示跑道的长度为n(1≤n≤10000)格。下一行的整数m,表示跑道中有奖惩值的格数。紧接其下的m(1≤n≤10000)行中,每行包含2个整数i和v(0≤i≤n-2, -10000≤v≤10000),分别表示格的下标和奖惩值;接下来的一行中的整数表示比赛的次数k(1≤k≤10000)。对于每次比赛,其第一行包含一个整数s(1≤s≤10000)表示A、B所跑的总步数,接下来的s行中每行包含2个整数sa,sb(1≤sa, sb≤10000)分别表示A、B掷骰子得到的步长。
    输出
    参照输出样例,输出每次比赛的结果。
    输入举例
    10
    3
    2 4
    5 -3
    8 -2
    5
    2
    2 5
    3 4
    2
    5 2
    4 3
    2
    5 2
    4 2
    3
    4 2
    3 1
    2 2
    2
    6 5
    6 9
    输出举例
    A wins a game
    B wins a game
    Both none
    A equal B
    A equal B

     #include<stdio.h>
    int main() {
        int n, m, i, v, s, k, sa, sb, h, j, A, B;//A,B分别存储A和B的运动情况
        scanf("%d%d", &n, &m);
        int *road = new int[n];        //创建动态数组,C用malloc
        for (h = 0; h < n; h++)     //初始化路上奖惩
            road[h] = 0;
        for (h = 0; h < m; h++) {   //输入奖惩
            scanf("%d%d", &i, &v);
            road[i] = v;
        }
        scanf("%d", &k);
        for (h = 0; h < k; h++) {
            A = B = 0;          //重置A、B位置
            scanf("%d", &s);
            for (j = 0; j < s; j++) {
                scanf("%d%d", &sa, &sb);
                A += sa;
                if(A<n-1)   //A未到终点前,判断奖惩
                    A += road[A];
                B += sb;
                if(B<n-1)   //同上
                    B += road[B];
            }
            if (A >= n - 1 && B >= n - 1)   //判断结果
                printf("A equal B
    ");
            else if (A >= n - 1)     
                printf("A wins a game
    ");
            else if (B >= n - 1) 
                printf("B wins a game
    ");
            else
                printf("Both none
    ");
        }
        return 0;
    }
  • 相关阅读:
    设计模式20-观察者模式
    设计模式19-备忘录模式
    设计模式18-中介者模式
    设计模式17-迭代器模式
    设计模式16-解释器模式
    Wireshark基本介绍和学习TCP三次握手
    Jmeter CSV 参数化/检查点/断言
    Jmeter运营活动并发测试—巧用集合点
    一个简单的性能测试
    Jmeter对HTTP请求压力测试、并发测试
  • 原文地址:https://www.cnblogs.com/F-itachi/p/9974329.html
Copyright © 2011-2022 走看看