在C ++中具有给定约束的N * N矩阵中的最大个数
给定任务是在以下约束下找到二进制矩阵中可能的最大数目。
给出两个整数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来存储矩阵的总大小。
然后最后初始化intans=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