0613antonio   2년 전

저는 이 문제에서 이런 점화식을 사용하면 해결될 것이라고 생각했습니다.

dp[i][j][down]=dp[i-1][j][max]+Ag[i][j];

dp[i][j][right]=dp[i][j-1][max]+Bs[i][j];

dp[i][j][0]=dp[i-1][j-1][max]+Bs[i][j]+Ag[i][j];

dp[i][j][max]=Max(dp[i][j][0],dp[i][j][right],dp[i][j][down]);

여기서 dp[i][j][max]는 특정 위치에서 최중 목적지를 I,j로 두고 시작지점에서부터 i,j 까지 트랙터를 대각선, 오른쪽, 아래로 움직인다고 했을 때 아래쪽 A와 위쪽 B의 최댓값을 의미합니다

dp[i][j][down]은 맨 마지막에 아래로 움직여서 i,j까지 도착한 경우를 의미합니다.

dp[i][j][right]은 맨 마지막에 오른쪽으로 움직여서 i,j까지 도착한 경우를 의미합니다.

dp[i][j][0]은 맨 마지막에 대각선으로 움직여서 i,j까지 도착한 경우를 의미합니다.

그래서 이를 잘 조합해보면 이런 점화식을 세울 수 있었습니다

여기서 Ag 배열은 특정 점과 같은 행의 왼쪽에 있는 사과의 개수를 의미합니다.(그 점을 제외)

여기서 Bs 배열은 특정 점과 같은 열의 위쪽에 있는 사과의 개수를 의미합니다.(그 점을 제외)

이 프로그램을 실행시켜 보면 아무것도 나오지 않습니다.

고수분들게 제가 점화식을 잘못 세웠는지, 혹은 메인함수에서 무언가를 잘못했는지 여쭙고 싶습니다.

댓글을 작성하려면 로그인해야 합니다.