巧用dfs解数独问题——算法笔记

这篇博客介绍了如何巧妙地使用DFS算法解决数独问题,通过n的运算表示数独的行、列和小正方形位置,仅需遍历一次n就能完成。由于数独答案唯一,一旦找到正确解即可结束搜索。
摘要由CSDN通过智能技术生成

巧妙的用 n 表示 第n/9行第n%9列 (0是第一个数)。
巧妙的用 row = (n/9)/33; col = n%9/33; 表示数独里面的小正方形(行、列)。那么遍历数独就至于要一个 n即可。 (0<=n < 81)
因为数独答案唯一,所以只要找到一个正确的,就可以 exit(0); 了。

#include <iostream>
#include <cstdlib>		//exit(0)	强制退出。(数独只有唯一解) 

using namespace std;

int a[9][9];

//n为第n/9行第n%9列		//巧妙的用 n 表示了 行&列中所有位置 
bool judge(int n,int i)		//判断  第n/9行第n%9列  数字 i 是否合法 
{
   
	for(int j=0;j<9;j++)
	{
   
		if(a[n/9][j] == i)		//检查行是否合法 
			return false;
		if(a[j
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值