\ # 1037: 숫자 삼각형
이 문 제 는 욕심 산법 이 전체 국면 에서 가장 좋 은 것 에 이 르 지 못 하고 검색 은 주로 심도 있 는 검색 과 크로스 오 버 검색 으로 나 뉜 다.일반적인 검색 은 옮 겨 다 니 는 것 이다. 기억 깊 은 검색 은 중간 구 조 를 저장 한 다음 에 불필요 한 검색 을 피 하 는 것 이다.이것 은 이미 동 귀 와 약간 유사 한 것 이 있 는데, 바로 모두 이 문제 의 비효 율 적 인 특징 을 사용 한 것 이다.그러나 기억 깊 은 검색 은 서브 문 제 를 반복 적 으로 계산 하고 기억 너비 로 바 꾸 면 반복 적 으로 서브 문 제 를 계산 하 는 문 제 를 피 할 수 있 을 것 이다.동태 계획 의 한 특징 은 바로 상태 전이 공식 이다. 내 생각 에는 전달 공식 에 해당 하 는데 이것 은 흔히 문 제 를 해결 하 는 관건 이다.
다음은 참조 코드 입 니 다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sin = new Scanner(System.in);
int numlines = Integer.valueOf(sin.nextInt());
int n = numlines;
sin.nextLine();
int price[][] = new int[numlines][numlines];
int getPrices[][] = new int[numlines][numlines];
while (numlines-- != 0) {
String tmp[] = sin.nextLine().split(" ");
for (int i = 0; i < n - numlines; i++) {
price[n-numlines-1][i] = Integer.valueOf(tmp[i]);
}
}
getPrices[0][0] = price[0][0];
for (int i = 1; i < price.length; i++) {
for (int j = 0; j < price[0].length; j++) {
if (j == 0) {
getPrices[i][j] = getPrices[i-1][j] + price[i][j];
} else if (i == j) {
getPrices[i][j] = getPrices[i-1][j-1] + price[i][j];
} else {
getPrices[i][j] = Math.max(getPrices[i-1][j-1], getPrices[i-1][j]) + price[i][j];
}
}
}
int res = getPrices[n-1][0];
for (int i = 1; i < n; i++) {
if (getPrices[n-1][i] > res) {
res = getPrices[n-1][i];
}
}
System.out.println(res);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.