[Java] 蓝桥杯PREV-33 历届试题 兰顿蚂蚁
问题描述
兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种。
平面上的正方形格子被填上黑色或白色。在其中一格正方形内有一只“蚂蚁”。
蚂蚁的头部朝向为:上下左右其中一方。
蚂蚁的移动规则十分简单:
若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;
若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。
规则虽然简单,蚂蚁的行为却十分复杂。刚刚开始时留下的路线都会有接近对称,像是会重复,但不论起始状态如何,蚂蚁经过漫长的混乱活动后,会开辟出一条规则的“高速公路”。
蚂蚁的路线是很难事先预测的。
你的任务是根据初始状态,用计算机模拟兰顿蚂蚁在第n步行走后所处的位置。
输入格式
输入数据的第一行是 m n 两个整数(3 < m, n < 100),表示正方形格子的行数和列数。
接下来是 m 行数据。
每行数据为 n 个被空格分开的数字。0 表示白格,1 表示黑格。
接下来是一行数据:x y s k, 其中x y为整数,表示蚂蚁所在行号和列号(行号从上到下增长,列号从左到右增长,都是从0开始编号)。s 是一个大写字母,表示蚂蚁头的朝向,我们约定:上下左右分别用:UDLR表示。k 表示蚂蚁走的步数。
输出格式
输出数据为两个空格分开的整数 p q, 分别表示蚂蚁在k步后,所处格子的行号和列号。
样例输入
5 6
0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
2 3 L 5
样例输出
1 3
样例输入
3 3
0 0 0
1 1 1
1 1 1
1 1 U 6
样例输出
0 0
package prev33;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int m = in.nextInt();int n = in.nextInt();final int BLACK = 1;final int WHITE = 0;int[][] maxtrix = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {maxtrix[i][j] = in.nextInt();}}int x = in.nextInt();int y = in.nextInt();String s = in.next();int k = in.nextInt();in.close();for (int i = 0; i < k; i++) {if (s.equals("U")) {if (maxtrix[x][y] == BLACK) {s = "R";maxtrix[x][y] = WHITE;y++;} else if (maxtrix[x][y] == WHITE) {s = "L";maxtrix[x][y] = BLACK;y--;} else {System.out.println("Are your square crack?");}} else if (s.equals("D")) {if (maxtrix[x][y] == BLACK) {s = "L";maxtrix[x][y] = WHITE;y--;} else if (maxtrix[x][y] == WHITE) {s = "R";maxtrix[x][y] = BLACK;y++;} else {System.out.println("Are your square crack?");}} else if (s.equals("L")) {if (maxtrix[x][y] == BLACK) {s = "U";maxtrix[x][y] = WHITE;x--;} else if (maxtrix[x][y] == WHITE) {s = "D";maxtrix[x][y] = BLACK;x++;} else {System.out.println("Are your square crack?");}} else if (s.equals("R")) {if (maxtrix[x][y] == BLACK) {s = "D";maxtrix[x][y] = WHITE;x++;} else if (maxtrix[x][y] == WHITE) {s = "U";maxtrix[x][y] = BLACK;x--;} else {System.out.println("Are your square crack?");}} else {System.out.println("Your direction have some errors.");}// print(maxtrix, m, n);}System.out.println(x + " " + y);}public static void print(int[][] maxtrix, int m, int n) {for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {System.out.print(maxtrix[i][j] + " ");}System.out.println();}}
}
[Java] 蓝桥杯PREV-33 历届试题 兰顿蚂蚁相关推荐
- Java实现蓝桥杯历届试题兰顿蚂蚁
历届试题 兰顿蚂蚁 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其 ...
- 历届试题 兰顿蚂蚁 (模拟)
题目: 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下左右 ...
- 【蓝桥杯】【python】兰顿蚂蚁
思路,其实没什么思路,就是按照他说的进行代码描述,利用函数分别表述在黑块和白块时候的操作方法 然后将方位用1-4进行替代 其实我在数据的输入上出了一些问题,我整理在我另外一篇文章里面了 https:/ ...
- java兰顿蚂蚁解题思路_蓝桥试题-兰顿蚂蚁
问题描述: 兰顿蚂蚁,是于1986年,由克里斯·兰顿提出来的,属于细胞自动机的一种. 平面上的正方形格子被填上黑色或白色.在其中一格正方形内有一只"蚂蚁". 蚂蚁的头部朝向为:上下 ...
- 蓝桥杯经典算法 不定方程解法 蓝桥杯练习系统 历届试题 买不到的数目
蓝桥杯经典算法 第六讲 不定方程解法 蓝桥杯算法教学与培训_蓝桥杯经典算法 第六讲 不定方程解法 不定方程的一般解法 朴素算法 public static void main(String[] ...
- 蓝桥杯练习系统历届试题 翻硬币
问题描述 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能情形是:**oo***oooo 如 ...
- “蓝桥杯”练习系统——历届试题
1. 核桃的数量(水题) 思路:求两个数的最大公约数可以用欧几里得算法(辗转相除法),即 a与b的最大公约数 等于 b与(a对b取余) 的最大公约数,当b等于0时,a与b的最大公约数是a.两个数的最小 ...
- 蓝桥杯 兰顿蚂蚁(模拟)
历届试题 兰顿蚂蚁 时间限制:1.0s 内存限制:256.0MB 问题描写叙述 兰顿蚂蚁.是于1986年,由克里斯·兰顿提出来的,属于细胞自己主动机的一种. 平面上的正方形格子被填上黑色或白色 ...
- 历届试题 核桃的数量(3个数的最小公倍数),翻硬币(贪心),买不到的数目(在范围内暴力,找范围,最小公倍数是上界,最小的数是下界),兰顿蚂蚁(dfs,模拟)
历届试题 核桃的数量 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能补脑).他的要求是: 各组的核桃数量必须相同 各组内必须能 ...
最新文章
- windows下使用Jenkins搭建CI持续集成平台(版本源码管理使用SVN)
- 线程的创建开销大吗?线程创建开销包括哪些?线程池
- JavaSE基础知识(5)—面向对象(Object类)
- 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)
- CSS 属性篇(七):Display属性
- ORA-01157 无法标识锁定数据文件的解决方法
- linux查看进程和终止进程
- Wireshark实战分析之IP协议(三)
- 软件测试之“支付功能”测试
- 2021年Flash被禁用后继续使用的方法
- 新倩女幽魂服务器维护,《倩女幽魂Online》更新公告(版本1.0.23)
- 有钱任性的农夫山泉,被迫踏上IPO?
- 外贸邮箱服务器设置,外贸邮客户端设置方法?
- 智能文档控制——文档的智能归档、捕获、索引、访问和协作
- Android连接网络打印机进行打印
- 计算机域名(domain name)
- ISO认证证书上常见的认可标志
- 安装卸载提示nsis error的解决方法
- 携程称将继续参与一嗨私有化 Ocean联合体有33.2%投票权
- 第五章 卡耐基驾驭竞争与合作 三 征服畏惧建立自信