[snap]frog jump 2D
2D frog jump 버전으로 점프 방향을 오른쪽 또는 아래로 정합니다.
기본적인 사고방식은 순서대로 동태적으로 기획하는 것이어서 다를 것이 없다.단지 두 개의 맵으로 모든 돌을 행과 열로 색인해야 한다.
아래 코드는 나도 검사하지 않았어, 응.
package snapchat;
import java.util.*;
public class FrogJump2D {
class Point{
int x;
int y;
Point(int x, int y){
this.x = x;
this.y = y;
}
}
public boolean canCross(List stones){
Map> rowsDic = new TreeMap<>();
Map> colsDic = new TreeMap<>();
Map> mp = new HashMap<>();
for(int[] stone : stones){
int x = stone[0];
int y = stone[1];
Point p = new Point(x,y);
if(!rowsDic.containsKey(x))rowsDic.put(x,new TreeMap());
if(!colsDic.containsKey(y))colsDic.put(y,new TreeMap());
rowsDic.get(x).put(y,p);
colsDic.get(y).put(x,p);
mp.put(p,new HashSet());
}
if(stones.size() <= 1)return true;
Point start = rowsDic.get(0).get(0);
mp.get(start).add(0);
int[] last = stones.get(stones.size() - 1);
Point end = rowsDic.get(last[0]).get(last[1]);
for(int row : rowsDic.keySet()){
for(int col : rowsDic.get(row).keySet()){
Point p = rowsDic.get(row).get(col);
for(int step : mp.get(p)){
int[] d = new int[]{-1,0,1};
for(int i = 0; i < 3; i++){
int hor = step + col + d[i];
int ver = step + row - 1;
if(hor > col && rowsDic.get(row).containsKey(hor)){
Point hp = rowsDic.get(row).get(hor);
mp.get(hp).add(step + d[i]);
}
if(ver > row && colsDic.get(col).containsKey(ver)){
Point vp = colsDic.get(col).get(ver);
mp.get(vp).add(step + d[i]);
}
}
}
}
}
return mp.get(end).size() != 0;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.