岁月联盟的勇士 chacker

C语言求解数独
平时喜欢玩数独游戏,昨日突发想用程序自动求解。思路是回溯法,不断试探。程序代码如下:& 1 #include&stdio.h&& 2& 3 /*& 4 {0,0,4,6,0,2,0,9,1},& 5 {2,1,0,9,8,4,0,5,6},& 6 {9,0,0,0,7,1,4,2,0},& 7 {1,2,5,0,6,0,3,4,7},& 8 {4,7,6,0,0,0,9,8,5},& 9 {8,3,9,0,4,0,1,6,2},&10 {0,9,1,2,5,0,0,0,4},&11 {5,8,0,4,1,6,0,3,9},&12 {6,4,0,3,0,7,5,0,0}};&13 */&14&15 int data[9][9] = {&16 {0,7,0,2,6,0,9,0,0},&17 {3,0,0,0,0,8,0,0,7},&18 {0,9,0,0,5,7,0,0,0},&19 {5,0,0,0,0,0,0,7,0},&20 {0,4,7,3,1,2,8,5,0},&21 {0,8,0,0,0,0,0,0,1},&22 {0,0,0,8,2,0,0,4,0},&23 {7,0,0,6,0,0,0,0,2},&24 {0,0,4,0,3,9,0,8,0}};&25&26 void input()&27 {&28&&&& int i,j;&29&&&& for(i = 0;i & 9;i++)&30&&&&&&&& for(j = 0;j & 9;j++)&31&&&&&&&&&&&& scanf(&%d&,&data[i][j]);&32 }&33&34 void output()&35 {&36&&&& int i,j;&37&&&& for(i = 0;i & 9;i++)&38&&&& {&39&&&&&&&& for(j = 0;j & 9;j++)&40&&&&&&&&&&&& printf(&%d &,data[i][j]);&41&&&&&&&& printf(&/n&);&42&&&& }&43&&&& printf(&/n&);&44 }&45&46 /*检查num是否可放置在3*3区域是否有冲突*/&47 int CheckSquare(int line,int col,int num)&48 {&49&&&& int i = (line / 3) * 3;&50&&&& int j = (col / 3) * 3;&51&&&& int m,n;&52&&&& for(m =m & i + 3;m++)&53&&&&&&&& for(n =n & j + 3;n++)&54&&&&&&&&&&&& if((data[m][n] == num) && !(m == line && n == col))&55&&&&&&&&&&&&&&&& return 0;&56&&&& return 1;&57 }&58&59 /*检查行冲突*/&60 int CheckLine(int line,int col,int num)&61 {&62&&&& int i = 9;&63&&&& while(i--)&64&&&&&&&& if((data[line][i] == num) && (i != col))&65&&&&&&&&&&&& return 0;&66&&&& return 1;&67 }&68&69 /*检查列冲突*/&70 int CheckColumn(int line,int col,int num)&71 {&72&&&& int i = 9;&73&&&& while(i--)&74&&&&&&&& if((data[i][col] == num) && (i != line))&75&&&&&&&&&&&& return 0;&76&&&& return 1;&77 }&78&79 /*检查i行j列是否可放置num*/&80 int Check(int i,int j,int num)&81 {&82&&&& return CheckSquare(i,j,num) && CheckLine(i,j,num) && CheckColumn(i,j,num);&83 }&84&85 /*检查是否完成*/&86 int IsDone()&87 {&88&&&& int i,j;&89&&&& for(i = 0;i & 9;i++)&90&&&&&&&& for(j = 0;j & 9;j++)&91&&&&&&&&&&&& if(!Check(i,j,data[i][j]) || (data[i][j] == 0))&92&&&&&&&&&&&&&&&& return 0;&93&&&& return 1;&94 }&95&96 void Calc()&97 {&98&&&& int i,j,x;&99&&&& if(IsDone())100&&&& {101&&&&&&&& output();102&&&&&&&&103&&&& }104&&&& for(i = 0;i & 9;i++)105&&&& {106&&&&&&&& for(j = 0;j & 9;j++)107&&&&&&&& {108&&&&&&&&&&&& if(data[i][j] == 0)109&&&&&&&&&&&& {110&&&&&&&&&&&&&&&& for(x = 1; x &= 9;x++)111&&&&&&&&&&&&&&&& {112&&&&&&&&&&&&&&&&&&&& if(Check(i,j,x))113&&&&&&&&&&&&&&&&&&&& {114&&&&&&&&&&&&&&&&&&&&&&&& data[i][j] =115&&&&&&&&&&&&&&&&&&&&&&&& Calc();116&&&&&&&&&&&&&&&&&&&& }117&&&&&&&&&&&&&&&& }118&&&&&&&&&&&&&&&& if(x == 10)119&&&&&&&&&&&&&&&& {120&&&&&&&&&&&&&&&&&&&& data[i][j] = 0;121&&&&&&&&&&&&&&&&&&&&122&&&&&&&&&&&&&&&& }123&&&&&&&&&&&& }124&&&&&&&& }125&&&& }126 }127128 int main()129 {130 //&&& input();131&&&& Calc();132&&&& output();133134&&&& return 0;135 }上述程序中,数字0表示该位置为空,待填入数字。&&摘自 泡泡腾
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?【原创】收集整理百款黑客软件集合_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
【原创】收集整理百款黑客软件集合
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢有没有人认识 永远的小秋?最早在岁月联盟的,后来去了哪里谁知道?就是研究黑客的那个Hacker小秋_百度知道
有没有人认识 永远的小秋?最早在岁月联盟的,后来去了哪里谁知道?就是研究黑客的那个Hacker小秋
以前让他帮我做过单子?给我他的QQ或者电话都可以我找他有事,现在又有人把我得罪了,谁能找到他来帮我
提问者采纳
提问者评价
其他类似问题
为您推荐:
hac的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁页次:1/24&每页25&总数579&&&&首页&&上一页&&&&&&&&转到:第 1 页第 2 页第 3 页第 4 页第 5 页第 6 页第 7 页第 8 页第 9 页第 10 页第 11 页第 12 页第 13 页第 14 页第 15 页第 16 页第 17 页第 18 页第 19 页第 20 页第 21 页第 22 页第 23 页第 24 页
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ?

我要回帖

更多关于 我的联盟 的文章

 

随机推荐