【题目描述】数独游戏
“我陪你玩这个数独游戏已经整整三天了,你到底什么时候给我上古神器?”修罗王忍不住问。
“这人生啊,急也好,慢也好,目标总能达到,何不让自己静下心来,慢慢欣赏一下沿途的风景?”上古神器的守护者悠悠道。
修罗王悻悻道:“如果玩这个没有赌注的话,我还真信你的话了,就三天工夫,你都把我的魔法石赢去一大半了。”
已知9×9的方阵,有些格子填有1-9的数字,有的格子则是空白。你的任务是完成这个方阵,使得每一行、每一列以及每一个小九宫格中的数字都刚好是1~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
设step表示当前位置,坐标可以用x = step / 9, y = step % 9;
除了求出坐标外还需要求出该位置所在的宫 i = x / 3 * 3, j = y / 3 * 3;得到所在宫的第一个坐标
#include <stdio.h>
#include <cstring>
int graph[10][10];
int visx[10][10]; // 9行每一行的9个数
int visy[10][10]; // 9列每一列的9个数
int check(int x, int y, int num) {
int xi = x / 3 * 3, yj =<