为了更好的阅读体检,可以查看我的算法学习博客矩阵稀疏扫描
题目描述
如果矩阵
只中的许多系数都为零,那么该矩阵就是稀疏的。对稀疏现象有兴趣是因为它的开发可以带来巨大的计算节省,并且在许多大的实践中都会出现矩阵稀疏的问题。
给定一个矩阵,现在需要逐行和逐列地扫描矩阵,如果某一行或者某一列内,存在连续出现的 0 0 0的个数超过了行宽或者列宽的一半 [ W / 2 ] W /2] W/2](整除),则认为该行或者该列是稀疏的。
扫描给定的矩阵,输出稀疏的行数和列数。
输入描述
第一行输入为 M M M和 N N N,表示矩阵的大小 M ∗ N M*N M∗N, 0 < M ≤ 100 0 < M \leq 100 0<M≤100, 0 < N ≤ 100 0 < N \leq 100 0<N≤100
接下来 M M M行输入为矩阵的成员,每行 N N N个成员,矩阵成员都是有符号整数,范围- 32 , 768 32,768 32,768到 32 , 767 32,767 32,767
输出描述
输出两行,第一行表示稀疏行的个数,第二行表示稀疏列的个数。
样例
输入
3 3
1 0 0
0 1 0
0 0 1
输出
3
3
说明
给定 3 ∗ 3 3*3 3∗3矩阵里,每一行和每一列内都存在 2 2 2个 0 0 0,行宽 3 3 3,列宽 3 3 3, [ 3 / 2 ] = 1 [3/2]=1 [3/2]=1,因此稀疏行有 3 3 3个,稀疏列有 3 3 3个。
输入
5 3
-1 0 1
0 0 0
-1 0 0
0 -1 0
0 0 0
输出
5
3
说明
给定的 5 ∗ 3 5*3 5∗3矩阵,每行里面 0 0 0的个数大于等于 1 1 1表示稀疏行,每列里面 0 0 0的个数大于等于 2 2 2表示稀疏行,所以有 5 5 5个稀疏行, 3 3 3个稀疏列。