排版类问题(机试高频)

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

  • 字符棱形、三角形、长方形
  • 旋转数字 / 矩阵旋转 / 矩阵翻转
  • 杨辉三角
  • 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. 机试遇到:先画样例 → 找规律 → 写循环 → 调试
相关推荐
Together_CZ9 分钟前
DTSemNet :Vanilla Gradient Descent for Oblique Decision Trees——用于倾斜决策树的普通梯度下降
算法·决策树·机器学习·vanilla·gradient·dtsemnet·用于倾斜决策树的普通梯度
一条大祥脚16 分钟前
ABC459 贪心构造|树形DP|组合数学|贪心|单调栈|势能|前缀和
算法·深度优先
灰灰勇闯IT31 分钟前
DeepEP:MoE 推理的 AllToAll 通信瓶颈怎么解
算法·cann
一行代码一行诗++33 分钟前
goto语句
java·开发语言·算法
arronKler1 小时前
MySQL命令行导出数据库
c语言·数据库·mysql
汉克老师1 小时前
GESP5级C++考试语法知识(十七、二分算法提高篇(二))
c++·算法·二分算法·gesp5级·gesp五级·二分算法易错点
叶小鸡1 小时前
小鸡玩算法-力扣HOT100-动态规划(下)
算法·leetcode·动态规划
信奥胡老师2 小时前
B3968 [GESP202403 五级] 成绩排序
数据结构·算法
Hwang2522 小时前
Attention 机制 02 - Add&Norm 残差机制
算法
东风破_2 小时前
LeetCode 209 · 滑动窗口经典题型
算法