在 C++ 中根據給定約束條件求解 N*N 矩陣中 1 的最大個數
任務是找到在滿足以下約束條件下,二進位制矩陣中可能的 1 的最大個數。
給定兩個整數 N 和 X,其中 X<=N。二進位制矩陣的大小應為 N*N,並且每個大小為 X*X 的子矩陣都應至少包含一個零。
讓我們用一個例子來理解我們必須做什麼:
輸入 - N=4,X=2
輸出 - 12
說明 - 結果矩陣將是:
1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1
輸入 - N=7,X=3
輸出 - 45
下面程式中使用的方法如下:
為了獲得 1 的最大個數,我們首先必須找到矩陣中所需的零的最小個數。
透過觀察所有矩陣中的共同模式,可以看出所需的零的個數 = (N / X)2
因此,1 的最大個數 = 矩陣中的元素總數 - 零的個數
在 MaxOne() 函式中,建立一個 int 型別的變數 Z,並將所需的零的最小個數 (N / X)2 儲存在其中。
然後初始化另一個 int 型別的變數 total = N*N 來儲存矩陣的總大小。
最後,初始化 int ans = total – Z 來儲存最終答案並返回 ans。
示例
#include <bits/stdc++.h>
using namespace std;
int MaxOne(int N, int X){
// Minimum number of zeroes that are needed
int Z = (N / X);
Z = Z * Z;
/* Totol elements in matrix = square of the size of the matrices*/
int total =N * N;
//Final answer
int ans = total - Z;
return ans;
}
int main(){
int N = 4;
int X = 2;
cout << MaxOne(N, X);
return 0;
}輸出
如果我們執行上面的程式碼,我們將得到以下輸出:
12
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP