forked from nishitpanchal395/projecthactoberfest
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBacktracking.cpp
More file actions
100 lines (82 loc) · 1.83 KB
/
Backtracking.cpp
File metadata and controls
100 lines (82 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Name: JHALA DEVRAJSINH SHRIPALSINH
// Date: 19/06/2021
// Purpose: Backtracking
// Backtracking:-
// Algorithmic technique for solving recursive problems by trying to build every possible solution incrementally and removing those solutions that fail to satisfy the constraints of the problem at any point of time
// Rat in a maze problem:-
#include<bits/stdc++.h>
using namespace std;
bool isSafe(int** arr, int x, int y, int n)
{
if(x<n && y<n && arr[x][y] == 1)
{
return true;
}
return false;
}
bool RatInMaze(int** arr, int x, int y, int n, int** solArr)
{
if(x == n-1 && y == n-1)
{
solArr[x][y] = 1;
return true;
} // Base condition
if(isSafe(arr,x,y,n))
{
solArr[x][y] = 1;
if(RatInMaze(arr,x+1,y,n,solArr))
{
return true;
}
if(RatInMaze(arr,x,y+1,n,solArr))
{
return true;
}
solArr[x][y] = 0; // Backtracking
return false;
}
return false;
}
int main()
{
int n;
cin >> n;
int** arr = new int*[n];
for(int i=0;i<n;i++)
{
arr[i] = new int[n];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin >> arr[i][j];
}
}
int** solArr = new int*[n];
for(int i=0;i<n;i++)
{
solArr[i] = new int[n];
for(int j=0;j<n;j++)
{
solArr[i][j] = 0;
}
}
if(RatInMaze(arr,0,0,n,solArr))
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout << solArr[i][j] << " ";
}cout << endl;
}
}
return 0;
}
// Input Array
// 1 0 1 0 1
// 1 1 1 1 1
// 0 1 0 1 0
// 1 0 0 1 1
// 1 1 1 0 1