在C ++中以2D矩阵打印同心矩形图案

在这个问题中,我们必须在2D矩阵中打印矩形图案,使它们彼此同心。

让我们举个例子来更好地理解这个问题,

For n=4 is :

   4 4 4 4 4 4 4

   4 3 3 3 3 3 4

   4 3 2 2 2 3 4

   4 3 2 1 2 3 4

   4 3 2 2 2 3 4

   4 3 3 3 3 3 4

   4 4 4 4 4 4 4

在这里,我们必须使用n,整数值打印上述图案,并将同心矩形打印为-

n  n   n   n  n

n n-1 n-1 n-1 n

n n-1 n-2 n-1 n

n n-1 n-1 n-1 n

n  n   n   n  n

现在,在这个问题中,我们可以看到2D矩阵中总共有(2n-1)个列和行。此2D矩阵分为两部分打印。上半部分从0到(2n-1)/ 2,下半部分从((2n-1)/ 2 + 1)到2n-2。

现在,每行将以1递减值,直到数量达到行数,即1到i(行数)。然后将数字增加回n。

示例

使用此逻辑,可以创建一个程序来解决问题,

#include <bits/stdc++.h>

using namespace std;

void print2Dsequence(int n){

   int s = 2 * n - 1;

   for (int i = 0; i < (s / 2) + 1; i++) {

      int m = n;

      for (int j = 0; j < i; j++) {

         cout << m << " ";

         m--;

      }

      for (int k = 0; k < s - 2 * i; k++) {

         cout << n - i << " ";

      }

      m = n - i + 1;

      for (int l = 0; l < i; l++) {

         cout << m << " ";

         m++;

      }

      cout << endl;

   }

   for (int i = s / 2 - 1; i >= 0; i--) {

      int m = n;

      for (int j = 0; j < i; j++) {

         cout << m << " ";

         m--;

      }

      for (int k = 0; k < s - 2 * i; k++) {

         cout << n - i << " ";

      }

      m = n - i + 1;

      for (int l = 0; l < i; l++) {

         cout << m << " ";

         m++;

      }

      cout << endl;

   }

}

int main(){

   int n = 4;

   cout<<"The sequence of concurrent rectangle of 4 is : \n";

   print2Dsequence(n);

   return 0;

}

输出结果

并发矩形4的顺序为-

4 4 4 4 4 4 4

4 3 3 3 3 3 4

4 3 2 2 2 3 4

4 3 2 1 2 3 4

4 3 2 2 2 3 4

4 3 3 3 3 3 4

4 4 4 4 4 4 4

以上是 在C ++中以2D矩阵打印同心矩形图案 的全部内容, 来源链接: utcz.com/z/345353.html

回到顶部