解题思路:根据一开始蚂蚁所处的格子分为两种情况:
根据步数建立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分
2 人评分
点我有惊喜!你懂得!浏览:4145 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:641 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:1276 |
C语言训练-斐波纳契数列 (C语言代码)浏览:3015 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:670 |
拆分位数 (C语言代码)浏览:1361 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:761 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:614 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:541 |
1113题解浏览:823 |