#include <bits/stdc++.h>
using namespace std;
bool isValid(vector<vector<int> >& board,
int i, int j, int K)
{
if (board[i][j] <= K) {
return true;
}
return false;
}
bool findPath(vector<vector<int> >& board,
int X, int Y,
int M, int N, int K)
{
if (X < 0 || X == M
|| Y < 0 || Y == N) {
return true;
}
if (isValid(board, X, Y, K)) {
int board_XY = board[X][Y];
board[X][Y] = INT_MAX;
if (findPath(board, X + 1, Y, M,
N, K - board_XY)
|| findPath(board, X - 1, Y, M,
N, K - board_XY)
|| findPath(board, X, Y + 1, M,
N, K - board_XY)
|| findPath(board, X, Y - 1, M,
N, K - board_XY)) {
return true;
}
board[X][Y] = board_XY;
}
return false;
}
int main()
{
vector<vector<int> > grid = {
{ 25, 5, 25, 25, 25, 25 },
{ 25, 1, 1, 5, 12, 25 },
{ 25, 1, 12, 0, 15, 25 },
{ 22, 1, 11, 2, 19, 15 },
{ 25, 2, 2, 1, 12, 15 },
{ 25, 9, 10, 1, 11, 25 },
{ 25, 25, 25, 25, 25, 25 }
};
int K = 17;
int M = grid.size();
int N = grid[0].size();
int X = 2, Y = 3;
if (findPath(grid, X, Y, M, N, K))
cout << "Yes";
else
cout << "No";
return 0;
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment