丝米大大


私信TA

用户名:1964000649

访问量:6756

签 名:

就是这么6

等  级
排  名 8509
经  验 1224
参赛次数 1
文章发表 7
年  龄 18
在职情况 学生
学  校 湖南
专  业 计算机应用技术

  自我简介:

TA的其他文章

解题思路:

中规中矩的做法

注意事项:

注意移动格子对应在数组下标的变化

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 < qiPan.length; i++) {
			for (int j = 0; j < qiPan[0].length; 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;
	}

}


 

0.0分

0 人评分

  评论区

  • «
  • »