C++程序 检查给定矩阵是否稀疏
矩阵是一个具有m行和n列的二维数据对象,因此总共有m*n个值。如果矩阵的大多数值为0,则我们称该矩阵为稀疏矩阵。
考虑一个关于稀疏矩阵的定义,如果矩阵中0的数量大于矩阵元素的一半,则认为该矩阵是稀疏矩阵。
示例:
输入 : 1 0 3
0 0 4
6 0 0
输出 : Yes
有5个0。这个数量超过了矩阵大小的一半。
输入 : 1 2 3
0 7 8
5 0 7
输出 : No
要检查一个矩阵是否是稀疏矩阵,我们只需要检查等于0的元素总数。如果这个计数大于(m*n)/2,则返回true。
//CPP代码检查矩阵是否稀疏。
#include <iostream>
using namespace std;
const int MAX = 100;
bool isSparse(int array[][MAX], int m, int n)
{
int counter = 0;
//在矩阵中计算0的数量
for (int i = 0; i < m; ++i)
for (int j = 0; j < n; ++j)
if (array[i][j] == 0)
++counter;
return (counter > ((m * n) / 2));
}
// Driver Function
int main()
{
int array[][MAX] = { { 1, 0, 3 },
{ 0, 0, 4 },
{ 6, 0, 0 } };
int m = 3,
n = 3;
if (isSparse(array, m, n))
cout << "Yes";
else
cout << "No";
}
输出:
Yes
时间复杂度: O(m*n),其中m和n分别是给定矩阵的行数和列数
辅助空间: O(1)