C语言程序怎么解决数独,数独解法解决方法

C语言程序怎么解决数独,数独解法解决方法当前位置 我的异常网 C 语言 数独解法解决方法数独解法解决方法 www myexceptions net 网友分享于 2013 11 21 浏览 47 次数独解法这两天看到他们在玩数独 想自己写个程序解出来 以下是自己的想法 不知道问题出在那里 或者有其他好的解法 推荐下 谢谢 typedefstruc chardata 9 9 charbuf 9 charnu

当前位置:我的异常网» C语言 » 数独解法解决方法

数独解法解决方法

www.myexceptions.net  网友分享于:2013-11-21  浏览:47次

数独解法

这两天看到他们在玩数独;

想自己写个程序解出来;

以下是自己的想法,不知道问题出在那里,或者有其他好的解法,推荐下,谢谢

typedef struct package{

char data[9][9];

char buf[9];

char num;

}PKG;

static char g_sData[9][9] = {0};

static PKG g_sPkg[81] = {0};

static int CheckData(char data[9][9], int num)

{

int i, j, k;

i = num / 9;

j = num % 9;

for(k=0; k<9; k++)

{

if(k == j || k==i)

continue;

if(data[i][k] == data[i][j])

break;

if(g_sData[k][j] == data[i][j])

break;

if(g_sData[i/3*3+k/3][j/3*3+k%3] == data[i][j])

break;

}

if(k< 9)

{

return 0;

}

return 1;

}

static void SaveData(char data[9][9])

{

int i=0;

FILE * fp = fopen(“data.txt”, “w+”);

fseek(fp, 0, 2);

printf(“sssssssssssssss\n”);

fprintf(fp, “/\n”);

for(i=0; i<9; i++)

{

fprintf(fp, ” %d %d %d %d %d %d %d %d %d \n”,

data[i][0], data[i][1], data[i][2], data[i][3], data[i][4], data[i][5], data[i][6], data[i][7], data[i][8]);

}

fclose(fp);

}

static int Calc(int inx)

{

char data[9][9] = {0};

char i,k=0;

printf(“num:%d, inx:%d\n”, g_sPkg[inx].num, inx);

for(i=0; i< g_sPkg[inx].num; i++)

printf(” %d “, g_sPkg[inx].buf[i]);

printf(“\n”);

for(k=0; k< g_sPkg[inx].num; k++)

{

memcpy((char *)data,(char *)(g_sPkg[inx].data), sizeof(data));

data[inx/9][inx%9] = g_sPkg[inx].buf[k];

if(CheckData(data, inx) ==0)

{

continue;

}

if(inx == 80)

{

SaveData(data);

continue;

}

memcpy(g_sPkg[inx+1].data, data, sizeof(data));

Calc(inx+1);

}

}

static int FillData(char data[9][9])

{

int num = 0;

char tmp[9] = {0};

int i=0,j=0,k=0,l;

//char data[9][9] = {0};

for(i=0; i<9; i++)

{

for(j=0; j<9; j++)

{

memset(tmp, 0, sizeof(tmp));

num = 0;

if(data[i][j] > 0)

{

tmp[num] = data[i][j];

num++;

}

else

{

for(k=1; k<10; k++)

{

for(l=0; l<9; l++)

{

if(data[i][l]>0 && data[i][l] == k)

break;

if(data[l][j]>0 && data[l][j]==k)

break;

if( data[i/3*3+l/3][j/3*3+l%3]>0 && data[i/3*3+l/3][j/3*3+l%3] == k)

break;

}

if(l>=9 && k<10)

{

tmp[num] = k;

num++;

}

}

}

g_sPkg[i*9+j].num = num;

memcpy((g_sPkg[i*9+j].buf), tmp, sizeof(tmp));

/*

printf(“a[%d][%d]:%d,num:%d\n”,i,j,data[i][j], g_sPkg[i*9+j].num);

for(k=0; k

printf(” %d “, g_sPkg[i*9+j].buf[k]);

printf(“\n”);

*/

}

}

}

int main(int argc, char *argv[])

{

char data[9][9] = {
{0,0,6, 0,1,0, 0,4,0},

{0,0,0, 4,0,0, 0,0,5},

{3,0,0, 5,0,0, 0,0,8},

{0,0,2, 8,0,5, 0,7,0},

{0,0,8, 0,0,2, 1,5,0},

{0,5,0, 0,7,0, 9,0,0},

{9,0,0, 0,0,4, 0,0,3},

{2,0,0, 0,0,6, 0,0,0},

{0,6,0, 0,5,0, 4,0,0}};

FillData(data);

Calc(0);

SaveData(data);

return 0;

}

——解决方案——————–

http://topic.csdn.net/u/20120703/08/acedb6fb-46a7-4005-b375-21fdc452030c.html

你可以参考一下

文章评论

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225273.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午9:41
下一篇 2026年3月17日 上午9:41


相关推荐

  • SVM解释:五、SMO算法

    SVM解释:五、SMO算法SMO算法是JohnC.Platt在1998年提出的。论文的题目是”SequentialMinimalOptimization:AFastAlgorithmforTrainingSupportVectorMachines”。它很快便成为最快的二次规划优化算法,特别是在针对线性SVM和数据稀疏时性能更优。当然了,SMO优越性能的背后是其相当复杂的数学推导,所以,我也把这块最…

    2022年6月24日
    26
  • 用PMML实现机器学习模型的跨平台上线

    用PMML实现机器学习模型的跨平台上线在机器学习用于产品的时候,我们经常会遇到跨平台的问题。比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环

    2022年8月5日
    7
  • 时域卷积网络TCN详解:使用卷积进行序列建模和预测

    时域卷积网络TCN详解:使用卷积进行序列建模和预测CNN 经过一些简单的调整就可以成为序列建模和预测的强大工具尽管卷积神经网络 CNNs 通常与图像分类任务相关 但经过适当的修改 它已被证明是进行序列建模和预测的有价值的工具 在本文中 我们将详细探讨时域卷积网络 TCN 所包含的基本构建块 以及它们如何结合在一起创建一个强大的预测模型 使用我们的开源 DartsTCN 实现 我们展示了只用几行代码就可以在真实数据集上实现准确预测 以下对时间卷积网络的描述基于以下论文 https arxiv org pdf 1803 01271 pdf 本文引用用

    2026年3月19日
    2
  • 异步fifo与同步fifo_161是同步还是异步清零

    异步fifo与同步fifo_161是同步还是异步清零异步FIFO设计

    2022年8月13日
    6
  • pycharm运行和调试不显示结果[通俗易懂]

    pycharm运行和调试不显示结果[通俗易懂]刚在虚拟机里面安装了pycharm,配置(setting)完后,新建一个py文件,键入"helloworld",竟然没有结果,虽然运行成功。pycharm太不友好了吧!然后开始找问题:1:有人说是文件名的问题,这个可能有,但是我没有改,我觉得我的这个很规范。2:pyqt的auto选项,试了一下没反应。3:还有人说版本问题,我check了最新版应该没问题,再装一次太麻烦了,也没有改。4:还有禁掉p…

    2022年8月29日
    5
  • NOIPD2T2 – 宝藏 题解

    NOIPD2T2 – 宝藏 题解

    2022年4月2日
    38

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号