Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<vector>
- using namespace std;
- int map[9][9];
- vector<pair<int, int> > empt;
- bool isOkay(int y, int x,int num) {
- for (int i = 0; i < 9; i++) {
- if (map[y][i] == num)return false;
- if (map[i][x] == num)return false;
- }
- int yy = (y / 3) * 3;
- int xx = (x / 3) * 3;
- for (int i = yy; i <= yy + 2; i++) {
- for (int j = xx; j <= xx + 2; j++) {
- if (map[i][j] == num)return false;
- }
- }
- return true;
- }
- bool dfs(int idx) {
- if (idx == empt.size()) {
- for (int i = 0; i < 9; i++) {
- for (int j = 0; j < 9; j++) {
- printf("%d ",map[i][j]);
- }
- printf("\n");
- }
- return true;
- }
- int nowY = empt[idx].first;
- int nowX = empt[idx].second;
- for (int i = 1; i <= 9; i++) {
- if (isOkay(nowY, nowX, i)) {
- map[nowY][nowX] = i;
- if(dfs(idx + 1))
- return true;
- map[nowY][nowX] = 0;
- }
- }
- }
- int main() {
- for (int i = 0; i < 9; i++) {
- for (int j = 0; j < 9; j++) {
- scanf("%d",&map[i][j]);
- if (map[i][j] == 0) {
- empt.push_back({ i,j });
- }
- }
- }
- dfs(0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement