题目描述
请编写一个程序,给数独中的剩余的空格填写上数字
空格用字符'.'表示
假设给定的数独只有唯一的解法
这盘数独的解法是:
思路:经典的搜索问题,和八皇后问题类似,关键实现一个合法性判断函数
isValid(x,y,c)即在x y位置放入c字符是否可行 即行不能重复 列不能重复 九宫格不能重复
dfs(index) 当遇到存在字符时跳过 空格时,填入Valid可行的字符,并跳转到下一个dfs(index+1)
当index==81即所有字符填充完毕时,是最终结果,迅速返回,不再dfs 可采取标记变量方式
易错点:当遇到无法继续下去时,即dfs返回时,需要改回原来填充位置为 '.'空
bool yes=false;
char map[9][9];//棋盘
bool isvalid(int x,int y,char c) //向(x,y)位置填入c是否有效
{
for(int i=0;i<9;i++)
{
if(i!=