解题思路:
注意事项:
参考代码:
import java.util.Scanner;
public class Main {
static String[] dir = {"U","R","D","L"};
static int[] xincress = {-1,0,1,0};//方向递增数组和上面的 方向数组对应
static int[] yincress = {0,1,0,-1};
static int dirIndex;//方向数组的坐标 记录当前朝向
static int x;
static int y;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();//行
int n = sc.nextInt();//列
int[][] map = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
map[i][j] = sc.nextInt();
}
}
x = sc.nextInt();//蚂蚁位置
y = sc.nextInt();
String towards = sc.next();//蚂蚁的朝向
int stepCount = sc.nextInt();//蚂蚁前进步数
for (int i = 0; i < 4; i++) {
if (dir[i].compareTo(towards) == 0) {
dirIndex = i;
break;
}
}
for (int i = 0; i < stepCount; i++) {
precede(map);
}
System.out.print(x +" ");
System.out.println(y);
}
//蚂蚁前进方法
public static void precede(int[][] map) {
//当前在黑格
if(map[x][y] == 1) {
map[x][y] = 0;//变为白格
dirIndex = (dirIndex + 1) % 4;
// System.out.print(dirIndex + " ");
x = x + xincress[dirIndex];
y = y + yincress[dirIndex];
// System.out.println("向右往前一步 当前在" + x + " ---" + y);
return;
}
//当前在白格
if(map[x][y] == 0) {
map[x][y] = 1;//变为黑格
dirIndex = (dirIndex - 1 + 4) % 4;//避免越界 保证是最小正数
// System.out.print(dirIndex + " ");
x = x + xincress[dirIndex];
y = y + yincress[dirIndex];
// System.out.println("向左往前一步 当前在" + x + " ---" + y);
return;
}
}
}
0.0分
3 人评分
C语言训练-求函数值 (C语言代码)浏览:931 |
C语言训练-角谷猜想 (C语言代码)浏览:1705 |
程序员的表白 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:528 |
WU-蓝桥杯算法提高VIP-企业奖金发放 (C++代码)浏览:1162 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:526 |
1017题解浏览:571 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:525 |
发工资咯 (C语言代码)浏览:792 |
字符逆序 (C语言代码)求大神指出错处,运行结果尝试了也与要求一样,但就是说结果错误,不知错在哪里浏览:436 |