数独游戏(c++题解)

题目描述

给出一个的表格,部分格子已经填好数。请填完所有空白格子,使得表格每一行、每一列、每个的九宫格,都恰好填满这9个数字。

输入格式

9行9列的方阵状态,0代表空格。

输出格式

输出完成后的方阵状态,每一个小九宫格以空格分隔。行为三个空格,列为一个空格。

样例

样例输入:

复制0 6 0 1 0 4 0 5 0
0 0 8 3 0 5 6 0 0
2 0 0 0 0 0 0 0 1
8 0 0 4 0 7 0 0 6
0 0 6 0 0 0 3 0 0
7 0 0 9 0 1 0 0 4
5 0 0 0 0 0 0 0 2
0 0 7 2 0 6 9 0 0
0 4 0 5 0 8 0 7 0

输出样例:

复制9 6 3   1 7 4   2 5 8
1 7 8   3 2 5   6 4 9
2 5 4   6 8 9   7 3 1

8 2 1   4 3 7   5 9 6
4 9 6   8 5 2   3 1 7
7 3 5   9 6 1   8 2 4 

5 8 9   7 1 3   4 6 2
3 1 7   2 4 6   9 8 5
6 4 2   5 9 8   1 7 3

_____________________________________________________________________________

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

 

#include<bits/stdc++.h>
using namespace std;
int a[10][10];
bool b[10][10];
bool c[10][10];
bool d[4][4][10];
void f(int x,int y){
	if(x==10&&y==1){
		for(int i=1;i<=9;i++){
			for(int j=1;j<=9;j++){
				cout<<a[i][j]<<" ";
				if(j%3==0)cout<<"  ";
			}
			if(i%3==0)cout<<endl<<endl;
			cout<<endl;
		}
	    exit(0);
	}
	if(a[x][y]==0){
		for(int i=1;i<=9;i++){
		    if(b[x][i]==true||c[y][i]==true||d[(x+2)/3][(y+2)/3][i]==true)continue;
    	    a[x][y]=i;
    	    b[x][i]=c[y][i]=d[(x+2)/3][(y+2)/3][i]=true;
			if(y+1<10)f(x,y+1);
		    if(y==9&&x+1<=10)f(x+1,1);		
			b[x][i]=c[y][i]=d[(x+2)/3][(y+2)/3][i]=false;
    	    a[x][y]=0;
	    }
	}else{
		if(y+1>0&&y+1<10)f(x,y+1);
		if(y==9&&x+1>0&&x+1<=10)f(x+1,1);
	}
}
int main(){
	for(int i=1;i<=9;i++){
		for(int j=1;j<=9;j++){
			cin>>a[i][j];
			if(a[i][j]!=0)
			b[i][a[i][j]]=c[j][a[i][j]]=d[(i+2)/3][(j+2)/3][a[i][j]]=true;
		}
	}
	f(1,1);
}

 

相关推荐

  1. 游戏(c++题解)

    2024-03-24 20:32:02       43 阅读
  2. Python游戏

    2024-03-24 20:32:02       36 阅读
  3. 扫雷游戏(c++题解)

    2024-03-24 20:32:02       70 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 20:32:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 20:32:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 20:32:02       82 阅读
  4. Python语言-面向对象

    2024-03-24 20:32:02       91 阅读

热门阅读

  1. 白学的小知识[js.事件]

    2024-03-24 20:32:02       42 阅读
  2. sql中如何添加数据

    2024-03-24 20:32:02       45 阅读
  3. Python:多态

    2024-03-24 20:32:02       42 阅读
  4. 设计模式-单例模式(模拟面试官八股)

    2024-03-24 20:32:02       44 阅读
  5. 使用 Python 读取 Word 文件

    2024-03-24 20:32:02       45 阅读
  6. LeetCode hot100-16

    2024-03-24 20:32:02       38 阅读
  7. LEETCODE-DAY31

    2024-03-24 20:32:02       37 阅读
  8. MONSD和SSD的区别

    2024-03-24 20:32:02       47 阅读