读书人

请帮小弟我看一下这段代码具体功能

发布时间: 2012-01-28 22:06:13 作者: rapoo

请帮我看一下,这段代码,具体功能里面有详细说明。(主要是算法)
运行后。
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

读书人网 >J2SE开发

热点推荐