ZQUOJ1396 Rock, Scissors, Paper 解题报告

本文介绍了一种基于二维矩阵的模拟游戏——剪刀石头布的演化过程。游戏中,每种状态(剪刀、石头、布)会在每天依据其相邻格子的状态进行变化。文章详细解释了如何通过双矩阵来实现状态的更新,并分享了AC代码。

Rock, Scissors, Paper

memory limit: 65536KB time limit: 2500MS

accept: 18 submit: 44

Description

Bart's sister Lisa has created a new civilization on a two-dimensional grid. At the outset each grid location may be occupied by one of three life forms: Rocks, Scissors, or Papers. Each day, differing life forms occupying horizontally or vertically adjacent grid locations wage war. In each war, Rocks always defeat Scissors, Scissors always defeat Papers, and Papers always defeat Rocks. At the end of the day, the victor expands its territory to include the loser's grid position. The loser vacates the position.
Your job is to determine the territory occupied by each life form after n days.

Input

The first line of input contains t, the number of test cases. Each test case begins with three integers not greater than 100: r and c, the number of rows and columns in the grid, and n. The grid is represented by the r lines that follow, each with c characters. Each character in the grid is R, S, or P, indicating that it is occupied by Rocks, Scissors, or Papers respectively.

Output

For each test case, print the grid as it appears at the end of the nth day. Leave an empty line between the output for successive test cases.

Sample Input

2

3 3 1

RRR

RSR

RRR

3 4 2

RSPR

SPRS

PRSP

Sample Output

RRR

RRR

RRR

 

RRRS

RRSP

RSPR

Source

ZQUCPC个人赛4

Author

Waterloo local

 

题意:

剪刀石头布,给出一个二维矩阵,每个位置是三种状态的一种,每一天三种状态可以取代四周对应的状态,剪刀取代布,布取代石头,石头取代剪刀,求n天后该矩阵的状态。

提交次数:

1次AC

总耗时:

大约半小时

 

问题的分析与解题思路:

这是一个水题,用两个矩阵,一个用来保存第n天没改变前的状态,另一个用来保存第n天改变后的状态,直接遍历改变前状态的那个矩阵,然后将每一个位置四周要改变的情况在第二个矩阵体现,然后将第二个矩阵复制到第一个,反复n次即可。

 

AC方法和数据结构:

直接遍历。

 

AC代码:

 

C语言程序.剪刀石头布 【问题描述】 剪子石头布是一种猜拳游戏,深受大家的喜爱。追溯起源,有一种说法是起源于我国。明朝人所写"五杂俎"记载,最早剪子石头布是起源自汉朝的手势令与豁拳。另外一种说法是起源于19世纪日本。这两个说法都不是很确定,直到现在都没有确定的结论。其游戏规则是:剪子剪布,石头打剪子,布包石头。 请编程实现:判断一次剪子石头布游戏的结果,并按要求输出提示信息。 【解题要求】 (1)严格遵循解题逻辑和编程规范编写源程序文件。 (2)将源程序文件命名为E2-2-13.C,存放在用户文件夹下。 (3)采用随机函数 rand ()实现两个玩家一次游戏的出拳情况。 (4)判断两名玩家的游戏结果:如果玩家1赢,输出" Win ";如果玩家1输,输出" Lose ";如果平局,输出" Tie "。 (5)对该程序进行调试,直至正确为止。 【解题提示】 描述剪子、石头、布三个对象时,可以用整数1、2、3分别代表剪子、石头、布,根据游戏规则,则一次剪子石头布游戏可能出现的所有情况如表2-2-4所示。 表2-2-4一次剪子石头布游戏情况表 玩家1 玩家2 玩家1﹣玩家2 玩家1结果 玩家2结果 1 2 -1 输 赢 2 11 1 赢 输 1 3 -2 赢 输 3 1 2 输 赢 2 3 -1 输 赢 3 2 1 赢 输 相同 相同 0 平局 平局 从表2-2-4中可以发现,玩家所出剪子石头布的差值为﹣1和2时,玩家1输;差值为1和﹣2时,玩家1赢;差值为0,平局。这样将游戏结果转换为对差值的判断,程序得以实现。
04-01
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值