在 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
JavaScript
PHP