算法之回溯法----解决9宫格问题
最近一直在看算法,原因是马上的算法竞赛就要到来了,今天回顾了一下常用算法中的回溯法。
回溯法也是深度优先遍历的一种方法,不过在回溯法进行的同时,将不可能的结果直接pass掉,这样就大大提高了程序的效率,回溯法求解八皇后问题在网上是非常多的,我这里就不举例了,今天我们用回溯法来求解难倒很多数学家的9宫格问题。问题是这样的:
玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。
数独的答案都是唯一的,所以,多个解也称为无解。直接附上代码啦,便于大家一起分析。
#include<stdio.h>
int result=0; //多少种结果
void showsudu(int data[9][9])
{
result++;
for(int row=0;row<9;row++)
{
for(int col=0;col<9;col++)
{