算法:bfs(深度优先搜索)

 

// dfs习题:
// 输入9行,0代表未知
// 输出9行即最终结果
#include <stdio.h>
#include <stdlib.h>
int main() {
	int table[9][9];
	//输入数据
	for (int i = 0; i < 9; i++) {
		for (int j = 0; j < 9; j++) {
			scanf("%d", &table[i][j]);
		}
	}

	dfs(table, 0, 0);
	
	return 0;
}

void dfs(int table[9][9], int x, int y)
{
	if (x == 9)
	{
		//打印最终数组数据
		my_print(table);
		exit(0);
	}
	// '0'要填入数字
	if (table[x][y] == 0)
	{
		//循环遍历要填入什么数字
		for (int k = 1; k <= 9; k++)
		{
			//检查行,列,九宫格是否含有该数字
			if (check(table, x, y, k) == 1)
			{
				table[x][y] = k;
				dfs(table, x + (y + 1) / 9, (y + 1) % 9);
			}
		}
		//回溯
		table[x][y] = 0;
	}
	else
	{
		//不是0则遍历下一个位置
		dfs(table, x + (y + 1) / 9, (y + 1) % 9);
	}
}

int check(int table[9][9], int x, int y, int k)
{
	//检查行、列是否含有数字k
	for (int i = 0; i < 10; i++) {
		if (table[i][y] == k || table[x][i] == k) {
			return -1;
		}
	}
	//检查九宫格是否含有数字k
	//x / 9定位所处行,y / 9定位所处列
	x /= 9;
	y /= 9;
	//定位到所处行、列坐标后遍历九宫格
	for (int i = 3 * x; i < 3 * x + 3; i++) {
		for (int j = 3 * y; j < 3 * y + 3; j++) {
			if (table[i][j] == k) {
				return -1;
			}
		}
	}
	//当行、列、九宫格内均不包含该数字返回1
	return 1;
}

//打印最终九宫格内容
void my_print(int table[9][9]) {
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			printf("%d ", table[i][j]);
		}
		printf("\n");
	}
}

 

最近更新

  1. TCP协议是安全的吗?

    2024-03-25 22:00:07       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-25 22:00:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-25 22:00:07       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-25 22:00:07       20 阅读

热门阅读

  1. 【暴刷力扣】15. 三数之和

    2024-03-25 22:00:07       17 阅读
  2. 有向图的BFS(c++题解)

    2024-03-25 22:00:07       17 阅读
  3. 第几个幸运数字 蓝桥杯刷题

    2024-03-25 22:00:07       20 阅读
  4. 2024/3/23 蓝桥杯

    2024-03-25 22:00:07       20 阅读
  5. Android--重构

    2024-03-25 22:00:07       21 阅读
  6. Python从入门到精通秘籍十八

    2024-03-25 22:00:07       18 阅读
  7. MySql Error Code:2006 - MySQL 服务器已离线问题解决

    2024-03-25 22:00:07       18 阅读
  8. 用汇编进行字符串匹配

    2024-03-25 22:00:07       18 阅读
  9. CentOS7.9安装MySQL5.7

    2024-03-25 22:00:07       17 阅读
  10. 五种主流数据库:分组统计

    2024-03-25 22:00:07       19 阅读
  11. VS实用快捷键小技巧

    2024-03-25 22:00:07       18 阅读