Skip to content

Commit 08adf70

Browse files
committed
Added Solution - GfG to GitHub
1 parent d0517a5 commit 08adf70

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
//{ Driver Code Starts
2+
#include <bits/stdc++.h>
3+
using namespace std;
4+
5+
6+
// } Driver Code Ends
7+
8+
9+
class Solution {
10+
public:
11+
// Function to find a solved Sudoku.
12+
bool solve(int i, int j, vector<vector<int>>& board, vector<vector<bool>> &row, vector<vector<bool>> &col, vector<vector<bool>> &sub_box){
13+
if(i==9) return true;
14+
if(j==9) return solve(i+1, 0, board, row, col, sub_box);
15+
if(board[i][j]!=0)return solve(i, j+1, board, row, col, sub_box);
16+
17+
for(int num=1; num<=9; num++){
18+
int box_no = (i/3)*3+(j/3);
19+
20+
if(row[i][num]==0 && col[j][num]==0 && sub_box[box_no][num]==0){
21+
row[i][num] = 1;
22+
col[j][num] = 1;
23+
sub_box[box_no][num] = 1;
24+
board[i][j] = num;
25+
26+
if(solve(i, j+1, board, row, col, sub_box)) return true;
27+
28+
row[i][num] = 0;
29+
col[j][num] = 0;
30+
sub_box[box_no][num] = 0;
31+
board[i][j] = 0;
32+
}
33+
}
34+
35+
return false;
36+
}
37+
38+
bool solveSudoku(vector<vector<int>>& board) {
39+
vector<vector<bool>> sub_box(9, vector<bool> (9+1, false));
40+
vector<vector<bool>> col(9, vector<bool> (9+1, false));
41+
vector<vector<bool>> row(9, vector<bool> (9+1, false));
42+
43+
for(int i=0; i<9; i++)
44+
for(int j=0; j<9; j++)
45+
if(board[i][j]!=0){
46+
int num = board[i][j];
47+
int box_no = (i/3)*3 + j/3;
48+
49+
row[i][num] = 1;
50+
col[j][num] = 1;
51+
sub_box[box_no][num] = 1;
52+
}
53+
54+
if(solve(0, 0, board, row, col, sub_box)) return true;
55+
return false;
56+
}
57+
};
58+
59+
//{ Driver Code Starts.
60+
61+
vector<int> inputLine() {
62+
string str;
63+
getline(cin, str);
64+
stringstream ss(str);
65+
int num;
66+
vector<int> res;
67+
while (ss >> num) {
68+
res.push_back(num);
69+
}
70+
return res;
71+
}
72+
73+
int main() {
74+
int t;
75+
cin >> t;
76+
cin.ignore();
77+
while (t--) {
78+
vector<vector<int>> grid;
79+
for (int i = 0; i < 9; i++) {
80+
vector<int> v = inputLine();
81+
grid.push_back(v);
82+
}
83+
84+
Solution ob;
85+
86+
ob.solveSudoku(grid);
87+
88+
for (auto v : grid) {
89+
for (auto elem : v) {
90+
cout << elem << " ";
91+
}
92+
cout << endl;
93+
}
94+
95+
cout << "~" << endl;
96+
}
97+
return 0;
98+
}
99+
// } Driver Code Ends

0 commit comments

Comments
 (0)