Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

พิมพ์รูปแบบสี่เหลี่ยมศูนย์กลางในเมทริกซ์ 2d ใน C++


ในปัญหานี้ เราต้องพิมพ์รูปแบบสี่เหลี่ยมใน เมทริกซ์ 2 มิติ ในลักษณะที่มีศูนย์กลางซึ่งกันและกัน

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหานี้กันดีกว่า

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

ทีนี้ ในปัญหานี้ อย่างที่เราเห็นมี (2n-1) คอลัมน์และแถวในเมทริกซ์ 2 มิติทั้งหมด เมทริกซ์ 2 มิตินี้พิมพ์ออกเป็นสองส่วน ตัวบนจะเป็นจาก 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