[杂项项目]纯C语言实现随机生成数独九宫格

这篇博客分享了一年前作者用纯C语言编写的程序,能够生成数独九宫格。作者在实现这个功能时花费了3天时间,主要使用了指针。虽然代码已给出,但详细实现过程将在后续补充。
摘要由CSDN通过智能技术生成

一年前的程序,可以生成一个数独的九宫格。当时想这种方法想了3天,终于实现了。由于当时刚熟悉指针,因此指针用的比较多。本人比较懒,先把代码贴出来,后序补充具体实现方法。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{
	int a[9][9] = { 0 };
	int *p[3][3], *m[3][6], *n[3][6], *r[9][4], *aa[9][9];
	int **q[9];
	int i, j, k, l, h, t, s = 0;
	void rank(int *x, int *y);
	bool check(int a[9][9], int n);
	srand((int)time(0));

	for (i = 0; i < 3; i++)
		for (j = 0; j < 3; j++)
			p[i][j] = &a[i * 3 + 1][j * 3 + 1];
	for (k = 0; k < 9; k++)
		q[k] = &p[k / 3][k % 3];
	for (i = 0; i < 3; i++)
		for (j = 0; j < 6; j++)
		{
			m[i][j] = &a[i * 3 + 1][2 * j - j / 2];
			n[i][j] = &a[2 * j - j / 2][i * 3 + 1];
		}
	for (k = 0; k < 9; k++)
		for (l = 0; l < 4; l++)
			r[k][l] = &a[(k / 3) * 3 + (l / 2) * 2][(k % 3) * 3 + (l % 2) * 2];
	for (i = 0; i < 9; i++)
		for (j = 0; j < 9; j++)
			aa[i][j] = &a[i][j];
step1:
	for (i = 0; i < 9; i++)
	{
	next1:
		**q[i] = rand() % 10;
		if (**q[i] == 0)
			goto next1;
		for (j = 0; j < i; j++)
			if (**q[j] == **q[i])
				goto next1;
	}
step2:
	for (i = 0; i < 3; i+
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值