设为首页 加入收藏

TOP

C语言求解数独(一)
2013-09-24 09:18:36 来源: 作者: 【 】 浏览:242
Tags:语言 解数

 

  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         return;

  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] = x;

  115                         Calc();

  116                     }

  117                 }

  118                 if(x == 10)

  119                 {

  120                     data[i][j] = 0;

  121                     return ;

  122                 }

  123             }

  124         }

  125     }

  126 }

  127

  128 int main()

  129 {

  130 //    input();

  131     Calc();

  132     output();

  133

  134     return 0;

  135 }

  上述程序中,数字0表示该位置为空,待填入数字。

      

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C文件写入统计信息到文件头 下一篇c语言中常字符串处理的函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: