魔兽世界吧 关注:14,667,309贴子:461,355,717

回复:求数独帝!!标题要短!!!!!!!!!!!!!!!!!!

只看楼主收藏回复

窝窝不过如此,窝窝并非万能
1L抄错了,18L是抄好的,坐等数独帝


107楼2009-07-04 18:58
回复
    窝窝不过如此,窝窝并非万能
    1L抄错了,18L是抄好的,坐等数独帝


    108楼2009-07-04 19:00
    回复
      2026-09-12 07:25:01
      广告
      不感兴趣
      开通SVIP免广告
      窝窝不过如此,窝窝并非万能
      1L抄错了,18L是抄好的,坐等数独帝


      109楼2009-07-04 19:00
      回复
        窝窝不过如此,窝窝并非万能
        1L抄错了,18L是抄好的,坐等数独帝


        110楼2009-07-04 19:00
        回复
          窝窝不过如此,窝窝并非万能
          1L抄错了,18L是抄好的,坐等数独帝


          111楼2009-07-04 19:01
          回复
            窝窝不过如此,窝窝并非万能
            1L抄错了,18L是抄好的,坐等数独帝


            112楼2009-07-04 19:01
            回复
              窝窝不过如此,窝窝并非万能
              1L抄错了,18L是抄好的,坐等数独帝


              113楼2009-07-04 19:02
              回复
                窝窝不过如此,窝窝并非万能
                1L抄错了,18L是抄好的,坐等数独帝


                114楼2009-07-04 19:03
                回复
                  2026-09-12 07:19:01
                  广告
                  不感兴趣
                  开通SVIP免广告
                  窝窝不过如此,窝窝并非万能
                  1L抄错了,18L是抄好的,坐等数独帝


                  115楼2009-07-04 19:03
                  回复
                    没人能解得出吗?


                    116楼2009-07-04 19:03
                    回复
                      窝窝不过如此,窝窝并非万能
                      1L抄错了,18L是抄好的,坐等数独帝


                      117楼2009-07-04 19:04
                      回复
                        你把原题发出来看看,我对这个也感兴趣


                        118楼2009-07-04 19:04
                        回复
                          原题:
                          ////4/6//
                          //8////1/
                          /24/6/7//
                          8//5/9/6/
                          /91/2///5
                          5//7/3/9/
                          /87/3/5//
                          //3////4/
                          ////9/8//


                          119楼2009-07-04 19:05
                          回复
                            刚用C语言写的,自己编译去吧。
                            #include <iostream>
                            #define Null 0
                            #define Max 100
                            using namespace std;
                            int gradation=0,*nullnum[Max],n_nullnum=0;             //gradation层次,nullnum为待求数字地址,n_nullnum为待求数字个数.
                            int position_i[Max],position_j[Max];                 //每个待求数字的下标.
                            int shudu[9][9]=                                     //待求数独的数组,待求量以0表示.
                            {
                                 {0,0,9,   0,4,0,   6,0,0},
                                 {0,8,0,   0,0,0,   0,1,4},
                                 {0,2,4,   0,6,0,   7,0,0},
                                 {8,3,2,   5,1,9,   4,6,7},
                                 {7,9,1,   0,2,0,   3,8,5},
                                 {5,4,6,   7,8,3,   0,9,0},
                                 {0,9,7,   0,3,0,   5,2,0},
                                 {0,0,3,   0,0,2,   0,4,0},
                                 {0,0,5,   0,9,0,   8,7,3}    
                            };
                            bool line(int i,int j)                                 //判断该尝试值在此行是否重复.
                            {
                                 int cirtemp,temp=0;
                                 for(cirtemp=0;cirtemp<9;cirtemp++)
                                     if(shudu[i][j]==shudu[cirtemp][j])
                                         temp++;
                                 if(temp==1)
                                     return true;
                                 else
                                     return false;
                            }
                            bool raw(int i,int j)                                 //判断该尝试值在此列是否重复
                            {
                                 int cirtemp,temp=0;
                                 for(cirtemp=0;cirtemp<9;cirtemp++)
                                     if(shudu[i][j]==shudu[i][cirtemp])
                                         temp++;
                                 if(temp==1)
                                     return true;
                                 else
                                     return false;
                            }
                            bool area(int i,int j)                                 //判断该尝试值在所在九宫格内是否重复
                            


                            120楼2009-07-04 19:10
                            回复
                              2026-09-12 07:13:01
                              广告
                              不感兴趣
                              开通SVIP免广告
                              {
                                   int temp=0;
                                   int i_area,j_area;
                                   int i_cirtemp,j_cirtemp;
                                   switch(i)
                                   {
                                       case 0:
                                       case 1:
                                       case 2:i_area=0;break;
                                       case 3:
                                       case 4:
                                       case 5:i_area=3;break;
                                       case 6:
                                       case 7:
                                       case 8:i_area=6;break;
                                   }
                                       switch(j)
                                   {
                                       case 0:
                                       case 1:
                                       case 2:j_area=0;break;
                                       case 3:
                                       case 4:
                                       case 5:j_area=3;break;
                                       case 6:
                                       case 7:
                                       case 8:j_area=6;break;
                                   }
                                   for(i_cirtemp=i_area;i_cirtemp<i_area+3;i_cirtemp++)
                                       for(j_cirtemp=j_area;j_cirtemp<j_area+3;j_cirtemp++)
                                           if(shudu[i][j]==shudu[i_cirtemp][j_cirtemp])
                                               temp++;
                                   if(temp==1)
                                       return true;
                                   else
                                       return false;
                              }
                              bool solve()
                              {
                                   int temp;
                                   gradation++;                                     //每次调用则表明层数进1.
                                   if(gradation>n_nullnum) return true;             //若层数对于nullnum数组下标越界则说明以往尝试成功,所有尝试均成立.
                                   for(temp=0;temp<10;temp++)
                                   {
                                       *nullnum[gradation-1]=temp;                     //逐层对nullnum进行赋值尝试.
                                       if(line(position_i[gradation-1],position_j[gradation-1])&&raw(position_i[gradation-1],position_j[gradation-1])&&area(position_i[gradation-1],position_j[gradation-1]))
                              


                              121楼2009-07-04 19:10
                              回复