• 散步的云
    了解作者
  • VBA
    开发工具
  • 51KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2018-01-12 15:58
    上传日期
在excel的单元格中填制已知的数,通过树叉的回溯,完成数独未知数的填制。
数独解法.zip
  • 数独解法
  • 数独解法 (完成).xlsm
    51.9KB
  • 最难数独有解的程序.txt
    13.5KB
内容介绍
Sub 数独() '将已知数填入活动表的A1:I9单元格,运行宏即可 '本程序有很多不足,欢迎改进! Dim i As Byte, t As Byte, r As Byte, x As Byte, y As Byte, zz As Byte Dim ta As Byte, tb As Byte, tc As Byte, td As Byte Dim hh(1 To 9, 1 To 9, 1 To 9) As Byte, hh2(1 To 9, 1 To 9) As Byte Dim g(1 To 9, 1 To 9) As Byte, gg(1 To 9) As Byte '九宫和九宫的和 Dim ypsi(1 To 9, 1 To 9) As Byte, yskn(0 To 9, 1 To 9, 1 To 9) As Byte '原始数组和分叉时保存的数组 81是暂定数 0是起始数,原始可能的数。 Dim jisu(1 To 9, 1 To 9) As Byte '计数数组,由于统计每个单元格可能数字的个数 Dim zsjw(1 To 9) As Byte '中间数组 ' Dim zan(1 To 729, 1 To 2) As Integer '模拟栈 Dim dzan(0 To 729, 1 To 6) As Integer '模拟一个综合栈,记录路径,候选数,历遍标志 Dim gtj As Boolean, htj As Boolean, ltj As Boolean Application.ScreenUpdating = False For y = 1 To 9 For x = 1 To 9 ypsi(y, x) = Cells(y, x) '把原始数据保留到数组 ' dzan(0, y, x, 1, 1) = Cells(y, x) Next Next yskn(0, 1, 1) = 0 zz = 0 ta = 0 tb = 0 tc = 0 E1: For y = 1 To 9 For x = 1 To 9 If Cells(y, x) = 0 Then Cells(y, x) = "" '如果单元格中有0 数组将溢出,此处做技术处理 Next Next g(1, 1) = Cells(1, 1) g(1, 2) = Cells(1, 2) g(1, 3) = Cells(1, 3) g(1, 4) = Cells(2, 1) g(1, 5) = Cells(2, 2) g(1, 6) = Cells(2, 3) g(1, 7) = Cells(3, 1) g(1, 8) = Cells(3, 2) g(1, 9) = Cells(3, 3) g(2, 1) = Cells(1, 4) g(2, 2) = Cells(1, 5) g(2, 3) = Cells(1, 6) g(2, 4) = Cells(2, 4) g(2, 5) = Cells(2, 5) g(2, 6) = Cells(2, 6) g(2, 7) = Cells(3, 4) g(2, 8) = Cells(3, 5) g(2, 9) = Cells(3, 6) g(3, 1) = Cells(1, 7) g(3, 2) = Cells(1, 8) g(3, 3) = Cells(1, 9) g(3, 4) = Cells(2, 7) g(3, 5) = Cells(2, 8) g(3, 6) = Cells(2, 9) g(3, 7) = Cells(3, 7) g(3, 8) = Cells(3, 8) g(3, 9) = Cells(3, 9) g(4, 1) = Cells(4, 1) g(4, 2) = Cells(4, 2) g(4, 3) = Cells(4, 3) g(4, 4) = Cells(5, 1) g(4, 5) = Cells(5, 2) g(4, 6) = Cells(5, 3) g(4, 7) = Cells(6, 1) g(4, 8) = Cells(6, 2) g(4, 9) = Cells(6, 3) g(5, 1) = Cells(4, 4) g(5, 2) = Cells(4, 5) g(5, 3) = Cells(4, 6) g(5, 4) = Cells(5, 4) g(5, 5) = Cells(5, 5) g(5, 6) = Cells(5, 6) g(5, 7) = Cells(6, 4) g(5, 8) = Cells(6, 5) g(5, 9) = Cells(6, 6) g(6, 1) = Cells(4, 7) g(6, 2) = Cells(4, 8) g(6, 3) = Cells(4, 9) g(6, 4) = Cells(5, 7) g(6, 5) = Cells(5, 8) g(6, 6) = Cells(5, 9) g(6, 7) = Cells(6, 7) g(6, 8) = Cells(6, 8) g(6, 9) = Cells(6, 9) g(7, 1) = Cells(7, 1) g(7, 2) = Cells(7, 2) g(7, 3) = Cells(7, 3) g(7, 4) = Cells(8, 1) g(7, 5) = Cells(8, 2) g(7, 6) = Cells(8, 3) g(7, 7) = Cells(9, 1) g(7, 8) = Cells(9, 2) g(7, 9) = Cells(9, 3) g(8, 1) = Cells(7, 4) g(8, 2) = Cells(7, 5) g(8, 3) = Cells(7, 6) g(8, 4) = Cells(8, 4) g(8, 5) = Cells(8, 5) g(8, 6) = Cells(8, 6) g(8, 7) = Cells(9, 4) g(8, 8) = Cells(9, 5) g(8, 9) = Cells(9, 6) g(9, 1) = Cells(7, 7) g(9, 2) = Cells(7, 8) g(9, 3) = Cells(7, 9) g(9, 4) = Cells(8, 7) g(9, 5) = Cells(8, 8) g(9, 6) = Cells(8, 9) g(9, 7) = Cells(9, 7) g(9, 8) = Cells(9, 8) g(9, 9) = Cells(9, 9) For y = 1 To 9 gg(y) = 0 For i = 1 To 9 jisu(y, i) = 0 '对计数数组赋值 ' dzan(zz, y, i, 1, 1) = Cells(y, i) '将节点的数据保存到数组 gg(y) = gg(y) + g(y, i) '对每一宫的数进行合计 For t = 1 To 9 hh(y, i, t) = t Next Next Next '''分段3 For y = 1 To 9 For x = 1 To 9 If Cells(y, x) > 0 And Cells(y, x) < 10 Then '如果宫格里的数已经确定则将该数读入列 For i = 1 To 9 hh(y, x, i) = 0 Next Else For i = 1 To 9 If Cells(y, i) <> "" Or Cells(y, i) <> 0 Then r = Cells(y, i) '去掉行里有的数 hh(y, x, r) = 0 End If Next For t = 1 To 9 If Cells(t, x) <> "" Or Cells(t, x) <> 0 Then r = Cells(t, x) '去掉列里有的数 hh(y, x, r) = 0 End If Next If y = 1 Or y = 2 Or y = 3 Then ''A If x = 1 Or x = 2 Or x = 3 Then For t = 1 To 9 '去掉宫1里有的数 If g(1, t) <> 0 Then r = g(1, t) hh(y, x, r) = 0 End If Next Else If x = 4 Or x = 5 Or x = 6 Then For t = 1 To 9 '去掉宫2里有的数 If g(2, t) <> 0 Then r = g(2, t) hh(y, x, r) = 0 End If Next Else For t = 1 To 9 '去掉宫3里有的数 If g(3, t) <> 0 Then r = g(3, t) hh(y, x, r) = 0 End If Next End If End If ''''''''''''' Else ''1 If y = 4 Or y = 5 Or y = 6 Then If x = 1 Or x = 2 Or x = 3 Then ''''3 For t = 1 To 9 '去掉宫4里有的数 If g(4, t) <> 0 Then r = g(4, t) hh(y, x, r) = 0 End If Next Else If x = 4 Or x = 5 Or x = 6 Then For t = 1 To 9 '去掉宫5里有的数 If g(5, t) <> 0 Then r = g(5, t) hh(y, x, r) = 0 End If Next Else For t = 1 To 9 '去掉宫6里有的数 If g(6, t) <> 0 Then r = g(6, t) hh(y, x, r) = 0 End If Next End If End If ''''3 Else If y = 7 Or y = 8 Or y = 9 Then If x = 1 Or x = 2 Or x = 3 Then ''''3 For t = 1 To 9 '去掉宫7里有的数 If g(7, t) <> 0 Then r = g(7, t) hh(y, x, r) = 0 End If Next Else If x = 4 Or x = 5 Or x = 6 Then For t = 1 To 9 '去掉宫8里有的数 If g(8, t) <> 0 Then r = g(8, t) hh(y, x, r) = 0 End If Next Else For t = 1 To 9 '去掉宫9里有的数 If g(9, t) <> 0 Then r = g(9, t) hh(y, x, r) = 0
评论
    相关推荐
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等
    • simulink仿真实现光伏发电MPPT+能量管理
      该文档是我的本科毕业设计,包含论文以及对应的MATLAB上的simulink仿真,代码主要包括:光伏MPPT算法,光伏电池和蓄电池构成能量管理系统,光伏电池、蓄电池和超级电容构成能量管理系统。比较全面
    • android从bootloader到launcher启动流程整理
      讲述android 开机流程 从boot rom---bootloader---init--zygote---systemserver---ams 并附上自己整理的每个流程的流程图 ,清晰熟悉android 启动流程
    • 飞轮储能系统MATLAB仿真
      基于MATLAB的储能飞轮电源系统仿真,电网侧电机侧都有
    • matlabpam代码-dsp-library:用于光通信的MATLABDSP函数库
      matlab pam代码 DSP库 该项目包含几种不同的功能,可将DSP算法应用于光通信。 这些功能适用于相干和非相干(PAM,DMT)光通信。 大多数功能是相互独立的。 因此,该代码中的功能可以轻松使用,并与其他DSP功能结合使用。 用法 功能列表以及简短说明在文件中。 输入和输出参数的描述在每个函数的标题中。 讯号 通常,输入(和输出)信号在第一维度上具有时间(例如,列向量),而第二维度用于一次管理多个信号(例如,不同的极化,不同的参数等)。 之所以选择这种约定,是因为MATLAB通过将列保留在内存的连续部分中来存储矩阵,因此,这种约定比其他方法(行向量)要快。 参数 大多数功能使用参数结构作为输入参数。 函数中使用的参数的描述通常在标头中,而coherent-dsp函数的默认参数在文件中。 参考 执照 此代码在下发布。
    • 有关多目标跟踪的PHD滤波的一些资料
      一些关于多目标跟踪的新的文献,主要是有关概率假设密度(PHD)的
    • 基于python开发的全国新工商采集工具 v1.2版本
      这个软件是通过scrapy爬虫框架结合代理IP池再加上request模拟请求技术以及验证码识别技术,可以做到日更新采集全国新工商信息。采集的数据自动存储在mysql数据库表里,可下载全量1.8亿多企业工商基本信息和36维度的详细信息.支持sql和excel导出数据包格式。
    • 卷积神经网络
      这是卷积神经网络的一个实际用例,已经调试好了,能够在matlab上成功运行,适合从事卷积神经网络(CNN)研究的人员学习使用。
    • matlab匹配滤波代码-matlab_for_thesis:Matlab博士学位论文代码
      matlab匹配滤波代码博士论文的MATLAB代码 博士论文的MATLAB代码的一部分,“井田双色散水下声通道中的多载波通信”。 函数下的func_JingTian文件夹 FUNC_JINGTIAN包含多载波通信中一些通常需要的功能: OFDM调制/解调模块,包括几种数据辅助的信道估计方法和差分解调; 快速实现GFDM和C-FBMC调制/解调,分别包括时域和频域的迫零(ZF)和匹配滤波(MF)均衡; 为OFDM信道估计中使用的压缩感测方法计算字典的功能; 增加信道效应,施加宽带多普勒失真的功能; 通过线性调频Z变换(CZT)以任意精度对频域中的信号进行重采样; Hermite函数合成的信号之间的交叉歧义函数的计算。 演示文件夹 以下列出了四个演示 demo1:使用基本追踪(BP)算法形式的压缩感知方法对OFDM进行稀疏2-D信道估计; demo2:比较基本数据辅助OFDM信道估计算法,包括常规频域插值和基于IDFT的变换域方法; demo3:圆形滤波器组多载波(C-FBMC / OQAM)的基于DFT特征向量的原型滤波器合成; demo4:用于广义频分复用(GFDM)的辅助日期辅助无干
    • Aerosim Blockset
      The AeroSim aeronautical simulation blockset provides a complete set of tools for the rapid development of nonlinear 6-degree of freedom aircraft dynamic models. In addition to the basic aircraft dynamics blocks, the library also includes complete aircraft models which can be customized through parameter files.