首页 > 编程语言 >有关数独问题的解决方法- Java实现

有关数独问题的解决方法- Java实现

时间:2023-04-17 22:23:38浏览次数:35  
标签:Java colum int length num board 解决 数独 numsBits

直接法和位运算发

 1 public boolean isValidSudoku(char[][] board) {
 2     int[][] line=new int[board.length][board.length];
 3     int[][] colum=new int[board.length][board.length];
 4     int[][] cell=new int[board.length][board.length];
 5     for (int i = 0; i < board.length; i++) {
 6         for (int j = 0; j < board.length; j++) {
 7             if (board[i][j]=='.')
 8                 continue;
 9             int num=board[i][j]-'0'-1;
10             int k=i/3*3+j/3;
11             if (line[i][num]!=0||colum[num][j]!=0||cell[k][num]!=0)
12                 return false;
13             line[i][num]=colum[num][j]=cell[k][num]=1;
14         }
15     }
16     return true;
17 }
18 public boolean isValidSudoku2(char[][] board) {
19     int[] line=new int[board.length];
20     int[] colum=new int[board.length];
21     int[] cell=new int[board.length];
22     int numsBits=0;
23     for (int i = 0; i < board.length; i++) {
24         for (int j = 0; j < board.length; j++) {
25             if (board[i][j]=='.')
26                 continue;
27             numsBits=1<<(board[i][j]-'0');
28             int k=i/3*3+j/3;
29             if ((line[i]&numsBits)>0||(colum[j]&numsBits)>0||(cell[k]&numsBits)>0)
30                 return false;
31             //此时的表示的每一行是否重复
32             line[i]|=numsBits;
33             colum[j]|=numsBits;
34             cell[k]|=numsBits;
35 
36         }
37     }
38     return true;
39 }

 

标签:Java,colum,int,length,num,board,解决,数独,numsBits
From: https://www.cnblogs.com/Mexcellent/p/17327750.html

相关文章

  • java抽象类和抽象方法
    抽象类语法:   [public]?abstractclass类名[extends父类名]?[implements接口名1,接口名2,...]?  {     [private | protected | public]? [static]?[final]?类型名变量名[ =表达式1 [,变量名[ =表达式2... ]?]?]? ;   [private |......
  • Java RMI与RPC,JMS的比较
    JavaRMI与RPC,JMS的比较远程对象方法调用并不是新概念,远程过程调用(RPC)已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即RPC支持多种语言,而RMI只支持Java写的应用程序。[1]另外RMI调用远程对象方法,允......
  • Java性能分析比较:远程调用方法
    现在,Java远程调用方法很多,各种方法的优缺点网络上也有很多的参考文章,这次我对几个典型的Java远程调用方法做了一个简单的性能分析比较,可供大家参考。现在,Java远程调用方法很多,各种方法的优缺点网络上也有很多的参考文章,这次我对几个典型的Java远程调用方法做了一个简单......
  • 解决 Redhat 出现”This system is not registered with RHN”更新
    由于redhat没有注册,所有不能使用它自身的源进行更新,所以我们可以通过更换源来进行相关更新:更改yum的源,即更换/etc/yum.repos.d/rhel-debuginfo.repo这个文件。进入/etc/yum.repos.d/目录,终端中输入wgethttp://docs.linuxtone.org/soft/lemp/CentOS-Base.repo即可在此目录下得......
  • JAVA 读取 ASF(WMA 和 WMV)文件信息
     /*读取ASF(WMA、WMV)标签*/publicstaticMusicTagEntityReadASFTag(Stringpath){ try { char[]WMAHead={0x30,0x26,0xB2,0x75,0x8E,0x66,0xCF,0x11,0xA6,0xD9,0x00,0xAA,0x00,0x62,0xCE,0x6C};//WMA头部标识 char[]StandardHead={0x33,0x2......
  • Java判断文件编码格式
    一般情况下我们遇到的文件编码格式为GBK或者UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。 对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:  java.io.Filef=newjava.io.File("待判定的......
  • ubuntu 使用移动硬盘出现无法挂载(解决办法)
    使用ubuntu11.04再移动硬盘copy过程中出现非正常关机,重启后无法mount硬盘,出现以下错误: 引用“Errormounting:mountexitedwithexitcode13:$MFTMirrdoesnotmatch$MFT(record0). Failedtomount'/dev/sdb1':Input/outputerror NTFSiseitherinconsistent,o......
  • 使用导航条时,第一次能正常的打开页面,但是访问其他页面后就全部页面都访问不了,状态码30
     直接访问正常, 访问其他页面时其他页面显示不出来问题在于我设置了两个同级的div,div没有设置id以及class,我把两个div合并成一个之后就解决了问题 如图是解决前 以下是解决后,正常显示的情况说实话这问题的解决方法也确实蛮奇怪的,找到这个问题是因为另一端代码是搬运......
  • Java字符串
    Java字符串String的特点程序当中所有用双引号括起来的东西都说字符串不管有没有生成String类1.字符串的内容永不可变(重点)2.字符串永不可变,所以可以共享使用3.字符串效果相当于char[]数组,但是底层原理是byte[]字节数组创建字符串创建字符串的3+1种方法构造方法:1.创......
  • 查找消耗cpu最高的Java进程
    #!/bin/bashif[-z"$1"];then###1.先找到消耗cpu最高的Java进程###pid=`ps-eopid,%cpu,cmd--sort=-%cpu|grepjava|grep-vgrep|head-1|awk'END{print$1}'`if["$pid"=""];then......