問題文(要ログイン)
import java.util.Arrays; public class InverseFactoring { public int getTheNumber(int[] factors) { if(factors.length == 1) return factors[0]*factors[0]; Arrays.sort(factors); return factors[0]*factors[factors.length-1]; } }問題読めたもん勝ち。最初のif文は別に書かなくてもいい。
とても簡単。
500
問題文
public class CrazyBot { private boolean point[][] = new boolean[30][30]; private double _east; private double _west; private double _north; private double _south; private double result = 0.0; public double getProbability(int n, int east, int west, int south, int north) { for(int i = 0; i < 30; i++) { for(int j = 0; j < 30; j++) { point[i][j] = false; } } _east = (double)east; _west = (double)west; _north = (double)north; _south = (double)south; dfs(n, 0, 0, 1.0); return result; } private void dfs(int n, int x, int y, double p) { if(point[y+15][x+15]) { return; } if(n == 0) { result += p; return; } point[y+15][x+15] = true; dfs(n-1, x+1, y, p*_east/100.0); dfs(n-1, x-1, y, p*_west/100.0); dfs(n-1, x, y+1, p*_north/100.0); dfs(n-1, x, y-1, p*_south/100.0); point[y+15][x+15] = false; } }この問題は時間内に解けなくて、人の回答を参考にした。
問題文読んでDFS(深さ優先探索)使えばいいんだなーって思ったけどどう実装していいかわからなかった。明らかな実力不足。勉強になりました。
0 件のコメント:
コメントを投稿