그래서 상황은 다음과 같습니다 그것은 사각형 격자가 그래서
1.에서는 N × N 그리드가
2. 내부
3. 모든 셀을 받게됩니다 단계의 최대 금액이 될 것입니다 그리드에는 최대 금액을 줄이는 특정 금액이 있습니다
4. 우회전과 우회전 만 가능합니다.
5. 시작점은 그리드의 왼쪽 상단이고 목표는 그리드의 오른쪽 하단입니다.
6. 우리는 가장 긴 경로 결과가 그 것이다알고리즘 - 긴 경로 그리드 퍼즐
그래서 현재 내가 이미 코드를 작성 -1 것
7. 어떤 경로 수있는 경우 (왼쪽 단계의 최소 최대 값을 가진 하나를) 결정해야 어떤 경우에는 작동하지만 여전히 최적의 상태는 아닙니다.
내가 지금하고있는 일은 다음과 같습니다.
1. 다음 올바른 값과 그 이하의 값이 있는지 확인하십시오.
2. 더 큰 값으로 이동하십시오.
3. 최대 스텝 량이 0이되면 이전 셀로 역 추적하고 다른 방향으로 이동하십시오.
4. 올바른 값과 아래 값이 같으면 다음 셀 다음의 셀을 검사합니다.
문제는 4 번째 포인트와 같습니다. 나는 X가 기회 오른쪽 값이 X보다 큰 수 있도록 Y 단계의 수는 더 큰 Y보다 큰 경우 대체가 추측
private static int determineBestNext(int[][] grid, int currentX, int currentY) {
int nextRight = 0;
int nextBelow = 0;
int numberOfRows = grid.length - 1;
for(int i=currentX+1;i<numberOfRows-1;i++) {
nextRight += grid[currentY][i+1];
if(currentY != numberOfRows) {
nextRight += grid[currentY+1][i+1];
}
}
for(int i=currentY+1;i<numberOfRows-1;i++) {
nextBelow = grid[i+1][currentX];
if(currentX != numberOfRows) {
nextBelow += grid[i+1][currentX+1];
}
}
if(nextRight > nextBelow) {
return 1;
} else if (nextBelow > nextRight) {
return 2;
} else {
return determineBestNext(grid, currentX+1,currentY+1);
}
}
:
이 4 점에 대한 내 코드입니다 그 반대.
다른 생각이 있으십니까? 감사!
감사합니다.
내 질문에 약간의 오해가있을 것이라고 생각하지만 답은 나를 이끌어 줄 것입니다. 실제로 내가 얻고 싶은 것은 최단 경로가 아니라 가장 값 비싼 경로입니다. –