随机数独生成

2024-04-24

我正在编写一个函数,该函数应该为模拟项目生成随机数独谜题;该函数将要生成的单元格数量作为参数,然后生成单元格索引和要放入这些单元格中的数字。 我在生成单元格索引时遇到问题,我不是编程专家,我找不到一个好的例程来生成索引并检查是否两次或更多次是相同的索引。其功能为:

void gen_puzzle(int quanti)
{
    if(quanti>81) exit(1);
    indexes* ij=new indexes[quanti];
    int f,g,k, controllo=1;

    do
    {
    for(f=0; f<9; f++)
     for(g=0; g<9; g++)
     {
     puzzle[f][g].num=0;//puts 0 in the sudoku puzzle
     puzzle[f][g].p=0;
     }

//////////////section to improve
out:
    srand(int(time(0)+clock()));

    for(k=0; k<quanti; k++)
     ij[k].i=casuale()-1, ij[k].j=casuale()-1;//generates random indexes of sudoku cells where put random nubers

    for(f=0; f<quanti; f++)
     for(g=f+1; g<quanti; g++)
    {
     if(ij[f].i==ij[g].i && (ij[f].j==ij[g].j)) goto out;

    }
////////////////////

    for(k=0; k<quanti; k++)
     puzzle[ij[k].i][ij[k].j] . num=casuale();//puts random numbers in cells
    }
    while(dataNotGood()); //till sudoku isn't good
}

我请求帮助了解该函数将随机索引放入的部分ij[]数组,我用了一个goto但这不是一个好的解决方案,并且如果quanti比17大一点左右。
casuale()只返回 1 到 9 之间的随机数。


首先,我会删除所有#pragma omp parallel指令,直到您拥有可以运行的代码。现在它只会降低可读性。

其次,如果您想生成“未解决的”数独(即大多数数字未填写的数独),您通常会随机填写一些数字,然后通过让计算机解决它来测试数独。如果计算机成功,则意味着您开始使用正确的数独。Here http://www.eddaardvark.co.uk/sudokusolver.html您会找到解决数独​​算法的很好的解释。

第三,请注意,您想要放入数独谜题中的数字受到很大限制。如果 3x3 块(或 9x1 行或列)包含 1,则无法向该块(行、列)添加额外的 1,如果 9x9 块包含 9 个 1,则无法向其添加额外的 1,等等因此,最好用您可以添加的所有数字填充一个数组数组(所有 3x3 块有 9 个 1-9 的数组),然后从这些数组中随机取出元素并将它们放入相应 3x3 块中的拼图中。这样您至少可以避免将重复数字添加到同一个 3x3 块中的情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

随机数独生成 的相关文章

随机推荐

  • GPars:返回eachParallel{}

    我想对每个示例字符串做很多事情 并在此处返回一些其他类型的对象 整数 然后返回一些更大的类对象 在这个例子中 我正在尝试一些简单的事情 但我得到了完全错误的结果 至少对于我希望得到的东西 xD 我希望得到 6 5 6 5 但我得到的是 bu
  • iPhone/iPad 的核心文本示例

    我正在寻找 iphone ipad 的核心文本示例 但运气不佳 任何线索将不胜感激 我在 Github 上编写了一个小项目 为 Core Text 提供了 Objective C 包装器 https github com akosma Co
  • 如何使用 WHERE 条件中的关联值从 ABAP SQL 消费 CDS?

    我有一个通知标头的 CDS 视图及其状态关联 define view ZNOTIF as select from qmel as notif association 0 to ZNOTIF STATUS as status on statu
  • jquery如何选择所有以“text-”开头的类元素?

    我有一些课程 text 1 text 2 text 3 我想全部选择 该怎么做 谢谢您的帮助 尝试这个 欲了解更多详情 请参阅jquery selectors http api jquery com attribute starts wit
  • 如何在反向代理后面正确设置 JSESSIONID cookie 路径

    我的网络应用程序正在 Tomcat 中运行http localhost 8080 example com 但它是从 Apache 提供的反向代理http example com 在端口 80 上 我的网络应用程序查看request getH
  • RGB 缓冲区到 JPEG 缓冲区,这里出了什么问题?

    我需要一种简单的方法将包含 RGB 数据的缓冲区转换为 jpeg 我已经尝试过使用 libjpeg 但我根本无法让它正常工作 例如 将缓冲区保存为位图时会产生以下结果 使用 libjpeg 在内存中对同一图像进行编码会产生以下结果 将图像直
  • Linux 消息队列 - 多个接收者

    我最近一直在研究和研究 Linux 消息队列 并遇到了一些我不太明白为什么会发生的事情 如果我们运行两个程序 它们都在无限 for 循环中使用 msgrcv 来检查消息 然后发送两条消息 那么第一个运行的程序将收到第一条消息 第二个程序将收
  • Javascript画布不重画?

    我正在开发一个游戏 基于画布 并且遇到了问题 显然 当我按下一个键时 画布并没有更新对象的 x 和 y 它什么也没做 变量本身正在更新 但屏幕上的对象没有更新 这是代码 var canvas document createElement c
  • fiddler2无法生成证书

    我正在使用 Fiddler2 或尝试 捕获访问 https Web 服务的 Windows 桌面小工具的 SSL 流量 它曾经可以工作 然后几天前就停止了 总是出现以下错误 Unable to Generate Certificate Cr
  • 从目录节点 Js 检索文件

    我正在使用 readDirSync 从目录中获取文件 请查找代码和错误如下 var fs require fs var files fs readdirSync application models for var i in files v
  • 将多页 PDF 转换为单个图像

    我必须将多页 PDF 文档转换为 png 图像 我尝试使用 ImageMagick 但无法获得最终结果 convert document pdf document png or convert adjoin document pdf doc
  • 将带有子存储库的 Mercurial 存储库迁移到 git 并保留历史记录的最佳方法?

    我正在尝试将 Mercurial 存储库迁移到 git 但问题是 Mercurial 存储库有子存储库 有些带有分支 以及大量合并和分支本身 我希望最终的 git 存储库能够保留所有这些历史记录 并且在检查存储库或其他分支的早期部分时保持正
  • Leaflet.label 未显示在标记上

    我有一组 geoJSON 点 它们附加了相应的标签 var points L geoJson null onEachFeature function feature layer layer options riseOnHover true
  • Windows 7 在“程序文件”中创建文件夹在 C# 代码中失败,即使我有管理员权限!

    我无法使用 VS 2008 WPF C 代码在 Windows 7 64 位计算机上的 程序文件 文件夹下创建文件 我在以下代码中遇到的错误 myFile File Create logFile 如下 这是innerException堆栈跟
  • 如何记录 IDE 的魔术(_call 和 _callStatic)方法

    在使用 notepad 和 sublime 编码多年之后 有人建议我尝试一下 PHP IDE 我正在尝试 phpStorm 它看起来不错 代码完成和文档是一个很棒的功能 但在使用魔术方法时对我来说不起作用 有没有办法让 phpStorm 了
  • JavaScript 中的空方括号?

    我在中遇到了这段代码https upmostly com tutorials setinterval in react components using hooks https upmostly com tutorials setinter
  • 如何使这个自定义工作表初始化更快?

    Summary 这个问题在某种程度上是这个问题的后续 如何从索引实现列自命名 https stackoverflow com questions 5160001 how to implement column self naming fro
  • 在 Haskell 中的列表末尾添加一个元素

    我是 Haskell 的初学者 我正在尝试在列表末尾添加一个元素 我输入一个像 1 2 3 4 这样的列表和一个数字 10 我想要一个像这样的输出 1 2 3 4 10 My code func a a func a x xs x func
  • 在 View 中使用 Zend_Acl 来显示/隐藏部分视图的方法是什么

    我想知道使用 Zend Acl 来显示 隐藏部分视图的方法是什么 我想我会的 创建一个Controller Plugin 传递登录用户 acl来查看 this gt view gt loggedInUser Zend Auth getIde
  • 随机数独生成

    我正在编写一个函数 该函数应该为模拟项目生成随机数独谜题 该函数将要生成的单元格数量作为参数 然后生成单元格索引和要放入这些单元格中的数字 我在生成单元格索引时遇到问题 我不是编程专家 我找不到一个好的例程来生成索引并检查是否两次或更多次是