#include <iostream>
using namespace std;
int a[605][605];
int dp[605][605];
int M, N, bx, by, ex, ey;
int dir[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};
int isOK(int x, int y)
{
return x >= 0 && x < M && y >= 0 && y < N ;
}
int f(int x, int y)
{
int res = 0;
if (dp[x][y]) return dp[x][y];
if (x == bx && y == by)
{
res = 1;
}
else
{
for (int i = 0; i < 4; i++)
{
int temp_x = x + dir[i][0];
int temp_y = y + dir[i][1];
if (isOK(temp_x, temp_y) && a[temp_x][temp_y] < a[x][y])
{
res += f(temp_x, temp_y);
}
}
}
return dp[x][y] = res;
}
int main()
{
cin >> M >> N;
for (int i = 0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
cin >> a[i][j];
}
}
cin >> bx >> by >> ex >> ey;
cout << f(ex, ey) << endl;
return 0;
}
笔试题2
最新推荐文章于 2023-03-12 22:46:10 发布