在 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

更新於:03-Jan-2020

710 次瀏覽

開啟你的 職業生涯

完成課程並獲得認證

開始
廣告