【C语言刷题】可能难住过你的三道有趣打印题 您所在的位置:网站首页 打印蛇形矩阵 【C语言刷题】可能难住过你的三道有趣打印题

【C语言刷题】可能难住过你的三道有趣打印题

2024-03-15 08:55| 来源: 网络整理| 查看: 265

目录 前言回型矩阵题目描述问题分析代码实现 蛇形矩阵题目描述问题分析代码实现 Z字形转换题目描述问题分析代码实现 小尾巴

前言

这三道题目均来自牛客网或力扣。

本文用图解的方式,以最简单的思路带你手把手解决这三个问题,但更重要的是要学会举一反三。

当然,三个题的解法肯定都不唯一,我这里给出来的解法可能并不是最优,只是以相对简单清晰的思路去分析问题,所以没有考虑复杂度的问题。

回型矩阵 题目描述

在这里插入图片描述

问题分析

先看一张图: 在这里插入图片描述 对于 n 为奇数和偶数,两个矩阵还不一样。 先看两种矩阵的共同点:

由内而外,先填外圈后填内圈,所以把填一圈抽象成一个大循环,每一个大循环又包含了四个小循环,每个小循环分别填一条边。 所以只需写出每个循环即可解决问题。

两种矩阵还有不同点:

对于 n 为偶数的情况,走完整数次大循环即可填满整个矩阵。 而对 n 为奇数的情况,走完整数次大循环之后会空下中间一个位置。 这个问题可以通过动态边界来解决: 定义两个边界 min 和 max ,没走完一次大循环让 min++, max–; 如果 n 为偶数,经过整数次大循环之后 min > max , 如果 n 为奇数,经过整数次大循环之后 min = max 。 所以可以利用这一点加个判断条件填上中间那个元素。

代码实现 int main() { int n = 0; scanf("%d", &n); int i, j; //根据输入值n分配一块空间给二维数组 int** arr = malloc(sizeof(int*) * n); for (i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有