#define MAX_TIMES 100
#define ARR_SIZE 9
#define MAX_NUM 10
void createNumArr(int arr[ARR_SIZE][ARR_SIZE])
{
int i = 0;
int j = 0;
int k = 0;
int tmp = 0;
int flag = 0;
int times = 0;
srand(time(NULL));
do
{
times = 0;
for (i = 0; i < ARR_SIZE; i++)
{
for (j = 0; j < ARR_SIZE; j++)
{
do
{
flag = 0;
tmp = rand() % MAX_NUM;
times++;
if (0 == tmp)
{
flag = 1;
}
for (k = 0; (k < j) && (flag != 1); k++)
{
if (tmp == arr[i][k])
{
flag = 1;
break;
}
}
for (k = 0; (k < i) && (flag != 1); k++)
{
if (tmp == arr[k][j])
{
flag = 1;
break;
}
}
if (times > MAX_TIMES)
{
break;//jump out inner do-while
}
}
while (flag);
if (times > MAX_TIMES)
{
break;//jump out inner for circle
}
arr[i][j] = tmp;
times = 0;
//printf("arr[%d][%d]=%d\n", i, j, tmp);
}
if (times > MAX_TIMES)
{
break;//jump out outter for circle
}
}
}
while (times > MAX_TIMES);
}
int isSodoArr(int arr[ARR_SIZE][ARR_SIZE])
{
int i = 0;
int j = 0;
for (i = 0; i < ARR_SIZE; i++)
{
for (j = 0; j < ARR_SIZE; j++)
{
//do something
}
}
return 1;
}
分享到:
相关推荐
4. **生成随机数独**:设计算法生成难度可调的数独谜题。可以从已解决的数独盘面开始,通过删除一定数量的数字,保证剩余数字能唯一解出原盘面。常用的算法有回溯法或者X-Wing等。 5. **用户交互**:监听用户的触摸...
1. **基础设置**:创建9x9的二维数组,初始化部分已知数字,形成一个基础的数独题目框架。 2. **空位查找**:找到当前未填充数字的格子,作为下一步填入数字的目标位置。 3. **数字尝试**:对1至9的数字进行尝试,...
在C++实现中,可以使用二维数组来表示数独矩阵,利用STL库中的容器和算法来简化代码。例如,可以使用`std::vector<std::vector<int>>`存储数独矩阵,并使用`std::set`或`std::bitset`来快速检查行、列和小九宫格的...
在这个“sd.rar”压缩包中,我们看到的是一个用C++实现的数独游戏程序,它包含了数独的生成、解决、读取和保存等功能。 首先,C++是编程领域中的一种通用编程语言,以其高效、灵活和面向对象的特性而受到程序员的...
3. **数据模型**:创建一个九宫格的数据模型,用二维数组表示数独盘面。每个元素可以是整数(1-9)或者空(0),代表已填数字或空白格。 4. **逻辑算法**:实现数独的逻辑算法,包括验证输入的数字是否正确,以及...
这个项目“100个数独(Python语言生成)”提供了使用Python编程语言生成的100个原创数独谜题,这些谜题可以用于杂志、报纸或网页等媒体,为爱好者们提供娱乐和挑战。 首先,让我们深入了解Python如何生成数独谜题。...
5. **编码实现**:在Java中,可以创建一个二维数组来表示数独矩阵,然后利用面向对象的特性封装操作方法,如`isValid()`用于验证当前数独是否合法,`removeNumber()`用于移除数字,`generatePuzzle()`用于生成数独...
数独解法生成是利用计算机算法来解决数独谜题的过程。 在C语言中实现数独解法,通常会涉及到递归或回溯算法。回溯法是一种试探性的解决问题的方法,当尝试一种可能的解时,如果发现该解不符合条件,就退回一步,...
在这个数独生成器中,MATLAB被用来创建算法,这些算法能够随机生成满足数独规则的填空矩阵。程序可能包含了初始化矩阵、生成随机解决方案、检查并消除重复解、以及根据难度调整空白数量等步骤。 首先,生成器会创建...
1. **数据结构**:通常使用二维数组或列表来表示数独网格,每个元素存储对应的数字或空格标记。 2. **算法设计**: - **生成算法**:用于创建新的数独谜题,可以采用回溯法、递归深度优先搜索等方式,确保生成的...
标题 "基于opencv的图片数独求解和数独题生成" 涉及的是使用OpenCV库处理图像,实现从图片中识别数独并解决数独题目的技术。OpenCV是一个强大的计算机视觉库,广泛应用于图像处理、图像分析和机器学习等领域。在这个...
"数独解法产生程序"的目标就是利用计算机算法解决数独问题,给定一个不完整的数独数组,程序将自动填充缺失的数字,生成完整的数独解决方案。 在这个程序中,通常会采用回溯算法或者递归的方式来解决数独问题。下面...
在这个案例中,作者采用的策略是通过递归实现深度优先搜索,利用二维数组存储当前数独的状态。由于搜索空间巨大(9叉树的80层),直接的暴力搜索会导致极高的计算量,因此需要引入启发式策略来优化搜索过程。 启发...
1. **随机填充**:数独生成通常从一个完全填满的数独开始,然后通过随机移除一些数字形成不完整的数独。在Matlab中,可以创建一个9x9的二维数组,初始化为1到9的全排列,然后随机选取一些位置将其设为空,以创建难度...
本话题涉及的知识点主要集中在JavaScript编程语言上,用于实现数独的解答和自定义题目的生成。 一、数独解法算法 1. 基于回溯的深度优先搜索(DFS):这是一种典型的递归方法,从空格最多的单元格开始尝试填入数字...
本项目聚焦于利用C语言实现数独的生成与求解,这对于理解算法和数据结构有很好的实践价值。数独是一种逻辑游戏,玩家需要根据9×9的宫格中已填好的数字,推断出剩余空格的正确数字,使得每一行、每一列以及每一个小...
在C#中,可以创建一个二维数组来表示数独网格,然后通过填充随机数字并检查是否合法,如果非法则回溯尝试其他数字,直到找到一个合法的解。为了生成不同难度的数独,可以调整预填充的数字数量,预填充的数字越多,...
在本文中,我们将深入探讨数独的生成算法和解题算法,并以C++编程语言为例,讲解如何实现这些算法。 生成数独的算法通常有两种主要方法:回溯法和递归深度优先搜索(DFS)。首先,我们从一个全零的9x9网格开始。...
数独是一种源自18世纪末的瑞士数学游戏,后来在日本流行并得名“数独”,在全世界范围内广受欢迎。...在实际开发中,还可以考虑增加更多功能,如生成随机数独、保存和加载游戏状态等,以提升用户体验。