给定任务是在以下约束下找到二进制矩阵中可能的最大数目。
给出两个整数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){ //所需的最小零个数 int Z = (N / X); Z = Z * Z; /* Totol elements in matrix = square of the size of the matrices*/ int total =N * N; //最终答案 int ans = total - Z; return ans; } int main(){ int N = 4; int X = 2; cout << MaxOne(N, X); return 0; }
输出结果
如果运行上面的代码,我们将获得以下输出-
12