C++程序 检查给定矩阵是否稀疏

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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例