if(y+1<n && arr[y+1][x]>arr[y][x])//down
{
//printf("D\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y+1, x));
}
if(y-1>0 && arr[y-1][x]>arr[y][x])//up
{
//printf("U\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y-1, x));
}
if(x+1<n && arr[y][x+1]>arr[y][x])//right
{
//printf("R\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y, x+1));
}
if(x-1>0 && arr[y][x-1]>arr[y][x])//left
{
//printf("L\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y, x-1));
}
여기서
if(y+1<n && arr[y+1][x]>arr[y][x])//down
{
//printf("D\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y+1, x));
}
if(y-1>=0 && arr[y-1][x]>arr[y][x])//up
{
//printf("U\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y-1, x));
}
if(x+1<n && arr[y][x+1]>arr[y][x])//right
{
//printf("R\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y, x+1));
}
if(x-1>=0 && arr[y][x-1]>arr[y][x])//left
{
//printf("L\n");
cache[y][x]=MAX(cache[y][x], ret+panda(y, x-1));
}
이렇게, (0,y) 혹은 (x,0)으로 가는 경우도 생각해주셔야 되죠.
그렇게 해서 통과 되었습니다. 실수하셨네요.
mushi 7년 전
현위치보다 큰 정수값이 있는 곳으로 최대 몇번 이동 가능한가로 계산했는데
답이 틀렸다고 뜹니다.
예제는 정답(4)이 뜨며, 제가 직접 예제를 만들어 해봐도 별 이상이 없어 보이는데
틀리네요. 이상한 부분을 못 찾겠습니다.
소스자체가 방향성을 잘못 잡고 작성한건가요?