C语言如何实现解数独程序
这篇文章主要为大家展示了“C语言如何实现解数独程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C语言如何实现解数独程序”这篇文章吧。
用C语言写的解数独的程序。在linux下测试成功运行。
效果如图:
这是带解的数独,需要填写的部分用数字0代替。
这是程序运行后的效果图。看看,数独已经搞定啦。
程序源码如下:
#include#include #defineSIZE9 #defineget_low_bit(x)((~x&(x-1))+1) struct{ intleft; charnum; chartry; }board[SIZE][SIZE]; intbit2num(intbit) { switch(bit){ case1:case2: returnbit; case4: return3; case8: return4; case16: return5; case32: return6; case64: return7; case128: return8; case256: return9; } } voidprintf_res() { inti,j,k; for(i=0;i 0) printf("\033[0;31m%2d\033[0m",board[i][j].num); else printf("%2d",board[i][j].try); } printf("|\n"); } for(i=0;i 0) sub(i,j,1<<(board[i][j].num-1)); elseif(board[i][j].try>0) sub(i,j,1<<(board[i][j].try-1)); } voidadd(inti,intj,intbit) { intk,m; for(k=0;k 0) solve(pos+1); else for(left=board[i][j].left;left;left&=(left-1)) { bit=get_low_bit(left); sub(i,j,bit); board[i][j].try=bit2num(bit); solve(pos+1); add(i,j,bit); board[i][j].try=0; init(); } } intmain() { inti,j,c; for(i=0;i '9') ; board[i][j].num=c-'0'; board[i][j].try=0; board[i][j].left=0x0001FF; } init(); solve(0); return0; }
以上是“C语言如何实现解数独程序”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
windows安装touble c
近期有些网友想要了解windows?安装touble的相关情况,小编通过整理给您分享一下。为什么现在还需要TurboC?在当今V...
-
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
-
C语言怎么通过二分查找实现猜数字游戏
C语言怎么通过二分查找实现猜数字游戏本文小编为大家详细介绍“C语言...
-
C语言数据结构中的线性表怎么使用
C语言数据结构中的线性表怎么使用这篇文章主要介绍“C语言数据结构中...
-
C语言的数据结构怎么理解
C语言的数据结构怎么理解这篇文章主要介绍了C语言的数据结构怎么理解...
-
C语言与C++中内存管理的方法
C语言与C++中内存管理的方法这篇文章主要介绍了C语言与C++中内...
-
C语言链式队列与循环队列怎么实现
C语言链式队列与循环队列怎么实现这篇文章主要介绍了C语言链式队列与...
-
C语言冒泡排序怎么实现
C语言冒泡排序怎么实现这篇文章主要介绍了C语言冒泡排序怎么实现的相...
-
C语言如何实现斐波那契数列
C语言如何实现斐波那契数列这篇文章主要介绍了C语言如何实现斐波那契...
-
C语言如何实现无符号数和有符号数间的运算
C语言如何实现无符号数和有符号数间的运算本篇内容主要讲解“C语言如...