任务描述
任尼乐公司开发了一个适合儿童的简单赛跑游戏。游戏规则是,在规定格数的跑道上,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
不知道怎么写代码,望大神告诉思路和源代码
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- weixin_43367986 2018-11-11 06:42关注
#include
int main() {
int n, m, i, v, s, k, sa, sb, h, j, A, B,road[10000];//A,B分别存储A和B的运动情况
scanf("%d%d", &n, &m);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\n"); else if (A >= n - 1) printf("A wins a game\n"); else if (B >= n - 1) printf("B wins a game\n"); else printf("Both none\n"); } return 0;
}
答题思路是建立两条道路,一条没有奖惩值,一条只有奖惩值,两条道路的相加得出总部数值,最后合并判断.
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 基于卷积神经网络的声纹识别
- ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
- ¥100 为什么这个恒流源电路不能恒流?
- ¥15 有偿求跨组件数据流路径图
- ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
- ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
- ¥15 CSAPPattacklab
- ¥15 一直显示正在等待HID—ISP
- ¥15 Python turtle 画图
- ¥15 stm32开发clion时遇到的编译问题