在C ++中具有给定约束的N * N矩阵中的最大个数
给定任务是在以下约束下找到二进制矩阵中可能的最大数目。
给出两个整数N和X,其中X <= N。二进制矩阵的大小应为N * N,并且每个大小为X * X的子矩阵都应至少包含一个零。
现在让我们使用示例了解我们必须做的事情-
输入-N = 4,X = 2
输出-12
说明-结果矩阵将是-
1 1 1 11 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
以上是 在C ++中具有给定约束的N * N矩阵中的最大个数 的全部内容, 来源链接: utcz.com/z/321776.html