1520번 - 내리막 길
Search함수와 같은 원리로 c에서 작성했을때는 채점이 맞았습니다...
#include <stdio.h>
int Dp[505][505];int position[5][5] = {{1,0},{-1,0},{0,1},{0,-1}};int map[505][505];int M, N;
int func(int y, int x){ if (y == 0 && x == 0) { //return Dp[y][x]; return 1; } else if (Dp[y][x] > -1) { return Dp[y][x]; } Dp[y][x] = 0; for (int i = 0; i < 4; i++) { if (y + position[i][0] >= 0 && y + position[i][0] < M && x + position[i][1] >= 0 && x + position[i][1] < N && maze[y + position[i][0]][x + position[i][1]] > maze[y][x]) { Dp[y][x] += func(y + position[i][0], x + position[i][1]); } }
return Dp[y][x];}int main(){ scanf("%d%d", &M, &N); for (int i = 0; i < M; i++) { for (int j = 0; j < N; j++) { scanf("%d", &map[i][j]); Dp[i][j] = -1; } }
printf("%d", func(M - 1, N - 1));
return 0;}
댓글을 작성하려면 로그인해야 합니다.
lsy980124 6년 전
Search함수와 같은 원리로 c에서 작성했을때는 채점이 맞았습니다...
#include <stdio.h>
int Dp[505][505];
int position[5][5] = {{1,0},{-1,0},{0,1},{0,-1}};
int map[505][505];
int M, N;
int func(int y, int x)
{
if (y == 0 && x == 0)
{
//return Dp[y][x];
return 1;
}
else if (Dp[y][x] > -1)
{
return Dp[y][x];
}
Dp[y][x] = 0;
for (int i = 0; i < 4; i++)
{
if (y + position[i][0] >= 0 && y + position[i][0] < M && x + position[i][1] >= 0 && x + position[i][1] < N && maze[y + position[i][0]][x + position[i][1]] > maze[y][x])
{
Dp[y][x] += func(y + position[i][0], x + position[i][1]);
}
}
return Dp[y][x];
}
int main()
{
scanf("%d%d", &M, &N);
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
scanf("%d", &map[i][j]);
Dp[i][j] = -1;
}
}
printf("%d", func(M - 1, N - 1));
return 0;
}