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