基于SAT的数独游戏求解程序,求C语言代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于SAT的数独游戏求解程序,求C语言代码相关的知识,希望对你有一定的参考价值。

⑴ 输入输出功能:包括程序执行参数的输入,SAT算例cnf文件的读取,执行结果的输出与文件保存等。
⑵ 公式解析与验证:读取cnf算例文件,解析文件,基于一定的物理结构,建立公式的内部表示;并实现对解析正确性的验证功能,即遍历内部结构逐行输出与显示每个子句,与输入算例对比可人工判断解析功能的正确性。
⑶ DPLL过程:基于DPLL算法框架,实现SAT算例的求解。
⑷ 时间性能的测量:基于相应的时间处理函数(参考time.h),记录DPLL过程执行时间(以毫秒为单位),并作为输出信息的一部分。
⑸ 程序优化:对基本DPLL的实现进行存储结构、分支变元选取策略[1-3]等某一方面进行优化设计与实现,提供明确的性能优化率结果。优化率的计算公式为:[(t-to)/t]*100%,其中t 为未对DPLL优化时求解基准算例的执行时间,to则为优化DPLL实现时求解同一算例的执行时间。
功能(1)至(5)为基础功能,占功能分值的85%。
⑹ SAT应用:将数独游戏[5]问题转化为SAT问题[6-8],并集成到上面的求解器进行问题求解,游戏可玩,具有一定的/简单的交互性。

用0代表要填的数

#include <stdio.h>

#include <stdlib.h>

#define SIZE 9

#define get_low_bit(x) ((~x&(x-1))+1)

struct

int left;

char num;

char try;

board[SIZE][SIZE];

int bit2num(int bit)

switch(bit)

case 16:

case 256:

return 9;

基础解法

排除法(摒除法)

摒除法:用数字去找单元内唯一可填空格,称为摒除法,数字可填唯一空格称为排除法 (Hidden Single)。

根据不同的作用范围,摒余解可分为下述三种:

数字可填唯一空格在「宫」单元称为宫排除(Hidden Single in Box),也称宫摒除法。

数字可填唯一空格在「行」单元称为行排除法(Hidden Single in Row),也称行摒除法。

参考技术A C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
参考技术B 哈哈哈,我今年也做这个,不过我不是华科的,我是法国大学的。我们用的不是C,是用法国人自己的语言OCAML 参考技术C 第一题不会可以选第二个呀 参考技术D 一看就是华科的,自己写吧

求网页版数独游戏的代码。

注意:是网页版哦,

参考技术A 你去下载吧 http://www.codefans.net/soft/5033.shtml追问

这个下载过了,不太好用,或者说我没弄成功

参考技术B 有兴趣可以自己编

以上是关于基于SAT的数独游戏求解程序,求C语言代码的主要内容,如果未能解决你的问题,请参考以下文章

用c语言写一个简易数独的思路。要代码

求网页版数独游戏的代码。

基于Android的数独游戏-----用Java语言编写

Python调用C语言实现数独计算逻辑提速100倍

c语言猜数字

c语言设计猜数字游戏