题解
【入门】鲜花方阵
1 条题解
-
0
解题思路
题目要求输出一个 n×n 的花盆方阵,0 组成沙漏状图形,其他是 1。拿 n=5 来看:
1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1规律:0 的位置。
0 分布在从四个角向中心延伸的斜线上,再加中心点:
- 第 0 行:中间 (0, n/2)
- 第 1 行:中间偏左和偏右
- …… 越往中间越向两边散开
- 中心点也是 0
思路:先全填 1,再把 0 的位置改掉。
- 初始化整个方阵为 1
- 用循环把四个方向的斜线位置设为 0:
- 第 i 行,从左右两边的 n/2±i 位置填 0(上半部分)
- 对称的下面也填 0
- 中心点填 0
- 场宽 3 输出
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int a[10][10]; int n; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) a[i][j] = 1; } // 四个方向的斜线位置填 0 for (int i = 0; i <= n / 2; i++) { a[i][n / 2 - i] = 0; a[i][n / 2 + i] = 0; a[n - 1 - i][n / 2 - i] = 0; a[n - 1 - i][n / 2 + i] = 0; } a[n / 2][n / 2] = 0; // 中心 for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cout << setw(3) << a[i][j]; } cout << endl; } return 0; }复杂度分析
- 时间复杂度:O(N²),填充和输出
- 空间复杂度:O(N²),二维数组
- 1