diff --git a/Algorithms/Backtracking/Rat_in_a_maze.cpp b/Algorithms/Backtracking/Rat_in_a_maze.cpp new file mode 100644 index 0000000..41c96eb --- /dev/null +++ b/Algorithms/Backtracking/Rat_in_a_maze.cpp @@ -0,0 +1,72 @@ +#include +using namespace std; + +#define N 4 + +bool solveMazeUtil(int maze[N][N], int x, int y, int sol[N][N]); + +void printSolution(int sol[N][N]) +{ + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) + cout<= 0 && x < N && y >= 0 && y < N && maze[x][y] == 1) + return true; + + return false; +} + +bool solveMaze(int maze[N][N]) +{ + int sol[N][N] = { { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 } }; + + if (solveMazeUtil(maze, 0, 0, sol) == false) { + cout<<"Solution doesn't exist"< + +bool isSubsetSum(int set[], int n, int sum) +{ + bool subset[n+1][sum+1]; + + for (int i = 0; i <= n; i++) + subset[i][0] = true; + + for (int i = 1; i <= sum; i++) + subset[0][i] = false; + + for (int i = 1; i <= n; i++) + { + for (int j = 1; j <= sum; j++) + { + if(j= set[i-1]) + subset[i][j] = subset[i-1][j] || + subset[i - 1][j-set[i-1]]; + } + } + return subset[n][sum]; +} + +int main() +{ + int set[] = {13, 34, 44, 18, 9, 23}; + int sum = 56; + int n = sizeof(set)/sizeof(set[0]); + if (isSubsetSum(set, n, sum) == true) + cout<<"Found a subset with given sum"<