Hatena::Grouptopcoder

hama_DU@TopCoderへの道

2012-04-20SRM345 (Practice)

SRM 345 Pathfinding

|  SRM 345 Pathfinding - hama_DU@TopCoderへの道 を含むブックマーク はてなブックマーク -  SRM 345 Pathfinding - hama_DU@TopCoderへの道

http://www.topcoder.com/stat?c=problem_statement&pm=7649

  • 探索で解こうと思った
    • 無理だった
  • 結局場合分けした。
    • xとyは対称性を持つので片方が負の場合だけを考えれば良い
  • 解法の検討に色々迷走したので時間がかかってしまった。
public class Pathfinding {
	public int getDirections(int x, int y) {
		int dx = Math.abs(x);
		int dy = Math.abs(y);
		
		if (x >= 0 && y >= 0) {
			if (dx % 2 == 1 && dy % 2 == 1) {
				return dx + dy + 2;
			}
			return dx + dy;
		} else if (x <= 0 && y <= 0) {
			if (dx % 2 == 0 && dy % 2 == 0) {
				return dx + dy + 4;
			}
			return dx + dy + 2;
		}
		
		if (x > 0) {
			int t = x;
			x = y;
			y = t;
		}
		
		dx = Math.abs(x);
		dy = Math.abs(y);
		if (dx % 2 == 1 && dy % 2 == 0) {
			return dx + dy + 2;
		}
		return dx + dy;
	}
}