首頁  >  文章  >  web前端  >  JavaScript程式:計算二進位矩陣中1和0的集合數

JavaScript程式:計算二進位矩陣中1和0的集合數

WBOY
WBOY轉載
2023-08-24 17:01:05784瀏覽

JavaScript程式:計算二進位矩陣中1和0的集合數

二進位矩陣是一個只由兩個數字組成的矩陣,如其名所示,這兩個數字是1和0。在本文中,我們將透過程式碼和適當的解釋來更好地理解概念。在本教程中,我們將編寫一個JavaScript程式來計算給定二進位矩陣中1和0的集合。

問題介紹

在這個問題中,我們給定了一個二進位矩陣,我們需要找到包含相同值的行或列的集合。一個集合可以是單一值,也可以是任意大小,但條件是它必須包含來自行或列的相同元素。例如,

我們有一個二進位矩陣,它有兩行三列,看起來像這樣 -

1 0 1
0 0 1

1和0的集合數量可以計算為

  • Set of size 1 − All the cells of the matrix are distinct sets in itself and there is a total of 6 cells.

  • 大小為2的集合 - 第二行的前兩列具有相同的值,第二列和第三列的值也相同,共有2個大小為2且具有相同值的集合。第一行還有兩個1可以被視為一個集合

  • #大小為3的集合 - 矩陣中可能的最大集合大小是行和列的最大大小,這裡是3。但是,對於大小,沒有可用的包含相同值的集合。

因此,我們分別有6個、3個和0個套裝可用於尺寸為1、2和3的情況。因此,最終我們的答案將是9。

方法

In the previous section, we have seen that we have to focus on only a particular row or column to get the number of similar elements in it. Also, we will use a mathematical concept to count the numbersizes with countsizes withsizes with count)。 present in a particular row or column.

例如,如果我們在行中有x個1的總數,則不同大小為1到x的1的集合的總數將來自於排列組合。

讓我們轉向這個方法 -

  • 首先,我們將得到一個包含零和一的數組,或者說是給定的二進位矩陣。

  • 我們將建立一個函數,用於自動計算傳遞給它作為參數的任何矩陣的所需答案,並將答案作為傳回值傳回。

  • 在這個函數中,我們將兩次遍歷數組或二進位矩陣,一次是按行,第二次是按列。

  • 在for迴圈中,我們將維護兩個變量,一個用於儲存1的個數,另一個用於儲存0的個數。

  • 在遍歷單行或單列後,我們將使用上面所見的公式更新答案,並將答案儲存在我們的變數中。

  • 最後,我們將透過從中刪除行*列來傳回答案,因為我們已經將它們新增了兩次。

我們已經移除了行 * 列,因為在遍歷行時,將集合與兩個零和一個一的單值相加,而在遍歷列時又進行了一次。

Example

的中文翻譯為:

範例

讓我們來看看上述步驟的實現,以便更好地理解這些概念 -

// given variables
var cols = 3; // no of columns
var rows = 2; // no of rows
// function to solve the problem with passed array 
function fun(arr) {
   // variable to store the final answer 
   var ans = 0;
   // traversing over the rows using for loop 
   for (var i = 0; i < rows; i++) {
      var ones = 0, zeroes = 0;
      for ( var j = 0; j < cols; j++) {
         if (arr[i][j] == 1)
         ones++;
         else
         zeroes++;
      }
      // increasing the answer on the basis of current count based on ones 
      ans = ans + Math.pow(2, ones)-1;
      // based on zeros 
      ans = ans + Math.pow(2, zeroes)-1;
   }
   //traversing over the columns using for loop 
   for (var i = 0; i < cols; i++) {
      var ones = 0, zeroes = 0;
      for ( var j = 0; j < rows; j++) {
         if (arr[j][i] == 1)
         ones++;
         else
         zeroes++;
      }
      //increasing the answer on the basis of current count based on ones 
      ans = ans + Math.pow(2, ones)-1;
      // based on zeros 
      ans = ans + Math.pow(2, zeroes)-1;
   }
   return ans - (rows * cols);
}
var arr = [ [ 1, 0, 1 ], [ 0, 1, 0 ] ];
console.log("Total number of the sets in the given binary matrix is: " + fun(arr));

時間與空間複雜度

上述程式碼的時間複雜度為O(N*N),其中N是給定矩陣的行數和列數中的最大值。

不使用額外的空間,因此程式碼的空間複雜度為O(1)。

結論

在本教程中,我們學習如何編寫一個JavaScript程序,用於計算給定二進位矩陣中1和0的集合數量。二進位矩陣是只包含兩個數字的矩陣,如其名稱所示,這兩個數字是1和0。所討論的程式碼的時間複雜度為O(N*N),空間複雜度為O(1)。

以上是JavaScript程式:計算二進位矩陣中1和0的集合數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除