解题思路:根据一开始蚂蚁所处的格子分为两种情况:
根据步数建立for循环,首先让蚂蚁所处的格子变为相对立的颜色。
1-处于白格中,先由switch,case语句判断开始蚂蚁的方向,然后蚂蚁向左旋转90度,改变方向。
2-处于白格中,先由switch,case语句判断开始蚂蚁的方向,然后蚂蚁向右旋转90度,改变方向。
注意事项:注意蚂蚁向上走是x的值减一,向下走是加一;(一开始我就错在这)
参考代码:import java.util.Scanner;
public class Main {
public static int[][] q; //颜色矩阵
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
q=new int[m][n];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
q[i][j]=sc.nextInt(); //输入矩阵的数字
int x=sc.nextInt();
int y=sc.nextInt();
String s=sc.next();
int k=sc.nextInt();
for(int i=0;i<k;i++) { //根据步数确定循环多少次
if(q[x][y]==0) //处于白格的情况
{
q[x][y]=1; //改变颜色
int x1=0;
int y1=0;
switch (s){ //改变方向
case "L":s="D";break;
case "R":s="U";break;
case "U":s="L";break;
case "D":s="R";break;
}
if(s=="L") {
x1=x;
y1=y-1;
}
if(s=="R") {
x1=x;
y1=y+1;
}
if(s=="U") {
x1=x-1;
y1=y;
}
if(s=="D") {
x1=x+1;
y1=y;
}
x=x1; //改变x,y的值,进入下一步
y=y1;
}
else { //处于黑格的情况
int x1=0;
int y1=0;
switch (s){ //改变方向
case "L":s="U";break;
case "R":s="D";break;
case "U":s="R";break;
case "D":s="L";break;
}
if(s=="L") {
x1=x;
y1=y-1;
}
if(s=="R") {
x1=x;
y1=y+1;
}
if(s=="U") {
x1=x-1;
y1=y;
}
if(s=="D") {
x1=x+1;
y1=y;
}
x=x1;
y=y1;
}
}
System.out.println(x+" "+y);
}
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复