POJ 1088 스키 - 동적 기획
Description
마 이 클 이 스키 백 을 좋아 하 는 것 은 이상 하지 않다. 왜냐하면 스키 는 확실히 자극 적 이기 때문이다.그러나 속 도 를 얻 기 위해 서 는 미 끄 러 지 는 구역 이 아래로 기울 어야 하고, 언덕 아래로 미 끄 러 지면 다시 언덕 을 올 라 가 거나 승강기 가 태 워 줄 때 까지 기 다 려 야 한다.마 이 클 은 한 지역 에서 가장 긴 바닥 슬로프 를 싣 고 싶 어 한다.구역 은 2 차원 배열 로 제 시 됩 니 다.배열 의 모든 숫자 대표 점 의 높이.다음은 하나의 예 이다.
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
한 사람 은 어떤 점 에서 상하 좌우 로 네 개의 점 중 하나 로 미 끄 러 질 수 있 으 며, 높이 만 줄 일 수 있다.위의 예 에서 미 끄 러 질 수 있 는 슬로프 는 24 - 17 - 16 - 1 이다.그럼요. 25 - 24 - 23 -... - 3 - 2 - 1 이 더 길 어 요.사실 이것 이 가장 긴 것 이다.
Input
입력 한 첫 줄 은 영역의 줄 수 R 과 열 수 C (1 < = R, C < = 100) 를 표시 합 니 다.다음은 R 줄 이 고 줄 마다 C 개의 정수 가 있 으 며 높이 h, 0 < = h < = 10000 을 대표 합 니 다.
Output
출력 최 장 영역의 길이 입 니 다.
Sample Input
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
Sample Output
25
#include
int matrix[100][100];
int dp[100][100];
int R;
int C;
int Max (int a, int b, int c, int d){
int max1 = (a > b) ? a : b;
int max2 = (c > d) ? c : d;
return (max1 > max2) ? max1 : max2;
}
// dp[i][j] = max(dp[i-1][j], dp[i+1][j], dp[i][j-1], dp[i][j+1]) + 1
int MaxLength(int i, int j){
if (dp[i][j] > 0)
return dp[i][j];
int a = 0;
int b = 0;
int c = 0;
int d = 0;
if (i-1 >= 0 && matrix[i][j] > matrix[i-1][j]){
a = MaxLength (i-1, j);
}
if (i+1 < R && matrix[i][j] > matrix[i+1][j]){
b = MaxLength (i+1, j);
}
if (j-1 >= 0 && matrix[i][j] > matrix[i][j-1]){
c = MaxLength (i, j-1);
}
if (j+1 < C && matrix[i][j] > matrix[i][j+1]){
d = MaxLength (i, j+1);
}
return dp[i][j] = Max (a, b, c, d) + 1;
}
int main(void){
int i, j;
int max;
while (scanf ("%d%d", &R, &C) != EOF){
for (i=0; i
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JZOJ.3432 [GDOI 2014 시뮬레이션] 서버 문제 해결 보고서이 서버의 번호는 1, 2,..., n이다.우선, 우리는 일부 서버를 선택하여 파일을 그것들에 직접 복사할 수 있다.서버 i에 파일을 복사하려면 ci가 필요합니다.직접 복제를 통해 파일을 얻지 못한 서버에 대해 i+...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.