首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请帮小弟我看一下,这段代码,具体功能里面有详细说明。(主要是算法)

2012-01-28 
请帮我看一下,这段代码,具体功能里面有详细说明。(主要是算法)运行后。0的地方必须是1到9之间的数字每一个数

请帮我看一下,这段代码,具体功能里面有详细说明。(主要是算法)
运行后。  
0的地方必须是1到9之间的数字  

每一个数字在所在行,和所在列中,必须是唯一的。  

例如   3行2列是一个5   ,那么第3行中,就不能在有5了。  
第2列中,也不能有了。  
谢谢。  
   
import   java.io.*;
import   java.lang.*;
public   class   a1
{  
    public   static   void   main(String[]   args)
    {
      int   [][]   k=new   int   [10][10];
      int   i;
      int   j;
      int   x=1;
      int   ii;
      int   jj;
      int   flag=0;

      System.out.println( "***************************** ");
 
    for   (   i=1;i <=9;i++)
        for   (   j=1;j <=9;j++)
          k[i][j]=0;
         
 
      k[1][2]=9;
      k[1][6]=4;
      k[1][9]=5;
   
      k[2][3]=3;
      k[2][5]=6;
      k[2][7]=4;
   
      k[4][3]=8;
      k[4][6]=2;
     
      k[5][1]=9;
      k[5][2]=5;
      k[5][5]=8;
      k[5][9]=3;
     
      k[6][3]=7;
      k[6][5]=9;
      k[6][7]=8;
      k[6][8]=1;
       
      k[7][2]=4;
      k[7][7]=3;
     
      k[8][1]=8;
      k[8][3]=2;
      k[8][5]=3;
      k[8][9]=1;
       
      k[9][2]=1;
      k[9][4]=2;
      k[9][6]=9;
      k[9][9]=4;
 
for   (i=1;i <=9;i++)
  {//   System.out.print( "*   ");
  for   (j=1;j <=9;j++)
  {     //System.out.print( "#   ");
  flag=0;
            //       x=1;
        if   (k[i][j]==0)
          {
                 
                for(x=1;x <=9;x++)
                    {  
                    flag=0;
                    for(ii=1;ii <=9;ii++)
                      {  
                   
                      if   (j!=ii)
                      {
                          if   (k[i][ii]==x)
                              {


                              flag=1;
                           
                              }
                                }
                    }
                  //***************************************************
             
              for(jj=1;jj <=9;jj++)
                      {  
                   
                      if   (i!=jj)
                      {
                          if   (k[jj][j]==x)
                              {
                              flag=1;
                           
                              }
                     
                     
                     
                     
                      }
                      }  
                   
                    if   (flag==0)
                    {
                    k[i][j]=x;       //这里是给值的。。。。   重点
                   
                    }
                   
                 
                   
                    }
          }
 
  }
 
 
}
 
    for   (   i=1;i <=9;i++)
      {  
            for   (   j=1;j <=9;j++)
        {
       
        System.out.print(k[i][j]);  
        System.out.print( "     ");  


        }
        System.out.println( " ");

}

System.out.println( "*************************** ");
}
}



[解决办法]
二维数组?不会
[解决办法]
坐在椅子上帮 "jtmfg() "顶,
呵呵
[解决办法]
看了半天,才发现这个是“数独”,算法是很复杂的,解数独的算法网上有很多的,自己找找看吧,在这里必要重复发明轮子吧。我在网上看到一个挺不错的,自己去研究一下吧:
http://bbs.bc-cn.net/dispbbs.asp?boardid=8&id=146075

热点排行