在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来存储矩阵的总大小。

  • 然后最后初始化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

回到顶部