解题思路:

中规中矩的做法

注意事项:

注意移动格子对应在数组下标的变化if (s.equals("L")) {

y -= 1;

}

if (s.equals("R")) {

y += 1;

}

if (s.equals("U")) {

x -= 1;

}

if (s.equals("D")) {

x += 1;

}

参考代码:import java.util.Scanner;

public class Main{

/**

* @param args

*/

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int[][] qiPan = new int[scanner.nextInt()][scanner.nextInt()];

for (int i = 0; i 

for (int j = 0; j 

qiPan[i][j] = scanner.nextInt();

}

}

int x = scanner.nextInt();// 蚂蚁在的坐标

int y = scanner.nextInt();

String s = scanner.next();

int k = scanner.nextInt();

/*

* 若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格; 若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。 0 表示白格,1

* 表示黑格。

*  2 3

*  3 3

*  3 4

*  2 4

*  2 3

*  1 3

*/

while (k > 0) {

if (qiPan[x][y] == 0) {// 在白格子

s = left(s);

qiPan[x][y] = 1;

// 移动

if (s.equals("L")) {

y -= 1;

}

if (s.equals("R")) {

y += 1;

}

if (s.equals("U")) {

x -= 1;

}

if (s.equals("D")) {

x += 1;

}

} else {// ==1 在黑格子

s = right(s);

qiPan[x][y] = 0;

if (s.equals("L")) {

y -= 1;

}

if (s.equals("R")) {

y += 1;

}

if (s.equals("U")) {

x -= 1;

}

if (s.equals("D")) {

x += 1;

}

}

k--;

}

System.out.println(x + " " + y);

}

private static String right(String s) {

if (s.equals("L")) {

return "U";

}

if (s.equals("U")) {

return "R";

}

if (s.equals("R")) {

return "D";

}

if (s.equals("D")) {

return "L";

}

return null;

}

private static String left(String s) {

if (s.equals("L")) {

return "D";

}

if (s.equals("D")) {

return "R";

}

if (s.equals("R")) {

return "U";

}

if (s.equals("U")) {

return "L";

}

return null;

}

}

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!