首页 技术 正文
技术 2022年11月14日
0 收藏 532 点赞 5,160 浏览 1450 个字

问题描述:给定9×9矩阵,看是是否是有效数独,不用全部都填上数字,可以为.

算法分析:这道题就是判断,不难,有效数独三个充分条件,行,列,3*3子矩阵,都要满足数字不能重复。

 public boolean isValidSudoku(char[][] board)
{
if(board == null || board.length != 9 || board[0].length != 9)
{
return false;
} //判断行
for(int i = 0; i < 9; i ++)
{
boolean[] m = new boolean[9];
for(int j = 0; j < 9; j ++)
{
if(board[i][j] != '.')
{
//if(m[(int)board[i][j]])这样写是错误的,因为(int)'1'不等于1.
if(m[(int)(board[i][j]-'1')])
{
return false;
}
m[(int)(board[i][j]-'1')] = true;
}
}
} //判断列
for(int i = 0; i < 9; i ++)
{
boolean[] m = new boolean[9];
for(int j = 0; j < 9; j ++)
{
if(board[j][i] != '.')
{
if(m[(int)(board[j][i]-'1')])
{
return false;
}
m[(int)(board[j][i]-'1')] = true;
}
}
} //判断3*3矩阵,总共有9个
for(int k = 0; k < 9; k ++)
{
boolean[] m = new boolean[9];
for(int i = k/3*3; i < k/3*3 + 3; i ++)
{
for(int j = k%3*3; j < k%3*3 + 3; j ++)
{
if(board[i][j] != '.')
{
if(m[(int)(board[i][j]-'1')])
{
return false;
}
m[(int)(board[i][j]-'1')] = true;
}
}
}
} return true;
}

还有一种方法,就是直接用set集合,判断元素是否重复。

 public boolean isValidSudoku(char[][] board) {
for(int i = 0; i < 9; i ++)
{
Set<Character> set = new HashSet<>();
for(int j = 0; j < 9; j ++)
{
if(board[i][j] != '.')
{
if(set.contains(board[i][j]))
{
return false;
}
set.add(board[i][j]);
}
}
set.clear();
} for(int i = 0; i < 9; i ++)
{
Set<Character> set = new HashSet<>();
for(int j = 0; j < 9; j ++)
{
if(board[j][i] != '.')
{
if(set.contains(board[j][i]))
{
return false;
}
set.add(board[j][i]);
}
}
set.clear();
} for(int k = 0; k < 9; k ++)
{
Set<Character> set = new HashSet<>();
for(int j = k/3*3; j < k/3*3+3; j ++)
{
for(int i = k%3*3; i < k%3*3+3; i ++)
{
if(board[j][i] != '.')
{
if(set.contains(board[j][i]))
{
return false;
}
set.add(board[j][i]);
}
}
}
set.clear();
} return true;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,498
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,911
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,745
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,499
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,138
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,302