排版类问题(机试高频)

特点:看似简单,实则考循环规律 + 二维数组,必须多练。常见题型:

  • 字符棱形、三角形、长方形
  • 旋转数字 / 矩阵旋转 / 矩阵翻转
  • 杨辉三角
  • 2048 问题

一、字符棱形

题目描述

输入整数 n(对角半长),用 * 输出棱形。

输入:3

输出:

复制代码
  *
 ***
*****
 ***
  *

解题思路

分成上三角 + 下三角

  1. 上三角:i 从 1 到 n
  2. 下三角:i 从 n-1 到 1每层:先打空格 ,再打 *

完整代码

cpp 复制代码
#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);

    // 上三角
    for (int i = 1; i <= n; i++) {
        // 打印空格
        for (int j = 1; j <= n - i; j++) {
            printf(" ");
        }
        // 打印 *
        for (int j = n - i + 1; j < n + i; j++) {
            printf("*");
        }
        printf("\n");
    }

    // 下三角
    for (int i = n - 1; i >= 1; i--) {
        for (int j = 1; j <= n - i; j++) {
            printf(" ");
        }
        for (int j = n - i + 1; j < n + i; j++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

二、杨辉三角形(DreamJudge 1062)

题目描述

输入行数 n(n≤20),输出前 n 行杨辉三角,输入 0 结束。规律:

  • 两边都是 1
  • 中间数 = 左上角 + 正上方a[i][j] = a[i-1][j] + a[i-1][j-1]

输入:5

输出:

复制代码
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

完整代码

cpp 复制代码
#include <stdio.h>

int main() {
    int a[21][21] = {0};
    int n;

    while (scanf("%d", &n) != EOF) {
        if (n == 0) break;

        a[1][1] = 1;

        // 构造杨辉三角
        for (int i = 2; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                a[i][j] = a[i-1][j] + a[i-1][j-1];
            }
        }

        // 输出
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }
    }

    return 0;
}

题型总结

  1. 图形题:拆分成上、下、左、右,一层一层写循环。
  2. 矩阵 / 杨辉三角:用二维数组 ,找递推公式
  3. 机试遇到:先画样例 → 找规律 → 写循环 → 调试
相关推荐
徐小夕9 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
可编程芯片开发10 小时前
UPFC统一潮流控制器的simulink建模与仿真
算法
小小仙子11 小时前
矢量网络分析仪如何测试S参数的?
人工智能·算法·机器学习
code bean12 小时前
【C#】 `Channel<T>` 深度解析:生产者-消费者模式的现代解法
数据结构·c#
中微极客12 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
storyseek13 小时前
前缀和实现Kogge-Stone算法
数据结构·算法
ziguo112213 小时前
深入浅出 C/C++ 数据类型:从入门到踩坑
linux·c语言·c++·windows·visual studio
元Y亨H13 小时前
开发者必须掌握的十大核心算法
算法
元Y亨H13 小时前
深度解构:数据结构与算法的理论基石与工程演进
数据结构·算法