Computer >> Máy Tính >  >> Lập trình >> C ++

Kiểm tra xem một ma trận đã cho có thưa thớt hay không trong C ++

Ở đây chúng ta sẽ xem làm thế nào để kiểm tra xem một ma trận có thưa thớt hay không. Ma trận thưa là ma trận có hầu hết các phần tử bằng 0. Định nghĩa của ma trận thưa là, nếu 2/3 của các phần tử là 0, thì ma trận được ký hiệu là ma trận thưa. Đây là ví dụ về ma trận thưa thớt.

Kiểm tra xem một ma trận đã cho có thưa thớt hay không trong C ++

Để kiểm tra nó, chúng tôi sẽ đếm số lượng các số 0 trong ma trận, sau đó nếu số lượng đó lớn hơn 2/3 tổng số phần tử, thì điều này là thưa thớt.

Ví dụ

#include <iostream>
#include <cmath>
#define MAX 5
using namespace std;
bool isSparseMatrix(int arr[][MAX], int m, int n) {
   int counter = 0;
   for (int i = 0; i < m; i++)
   for (int j = 0; j <n; j++)
   if (arr[i][j] == 0)
      counter++;
   return (counter > (2*(m * n) / 3));
}
int main() {
   int matrix[MAX][MAX] = {
      {0, 2, 0, 0, 0},
      {8, 0, 0, 0, 0},
      {0, 3, 0, 0, 0},
      {0, 9, 0, 3, 0},
      {0, 0, 0, 0, 4}
   };
   if(isSparseMatrix(matrix, MAX, MAX)){
      cout << "This is sparse matrix";
   } else {
      cout << "This is not sparse matrix";
   }
}

Đầu ra

This is sparse matrix