博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指offer--面试题20
阅读量:4980 次
发布时间:2019-06-12

本文共 1604 字,大约阅读时间需要 5 分钟。

题目:从外向里顺时针打印矩阵

 

做题心得:该题本质上并未考查复杂的数据结构及算法,而是考查了快速找规律的能力!!!

     要想作出此题,必须先有绝对清晰的思路,否则越写越乱(因为涉及到很多的循环打印)

自己当时的思路基本符合作者提供的思路:

     先考虑怎么打印一圈(四个循环),再考虑如何结束打印(和作者的意图不太一样,自己想通过打印数<=rows*columns来决定,作者的思路比较难想!)

 

但真正去写还是很困难。。。

参考代码如下:

#include "stdafx.h"void PrintMatrixInCircle(int** numbers, int columns, int rows, int start);void printNumber(int number);void PrintMatrixClockwisely(int** numbers, int columns, int rows){    if(numbers == NULL || columns <= 0 || rows <= 0)        return;    int start = 0;    while(columns > start * 2 && rows > start * 2)    {        PrintMatrixInCircle(numbers, columns, rows, start);        ++start;    }}void PrintMatrixInCircle(int** numbers, int columns, int rows, int start){    int endX = columns - 1 - start;    int endY = rows - 1 - start;    // 从左到右打印一行    for(int i = start; i <= endX; ++i)    {        int number = numbers[start][i];        printNumber(number);    }    // 从上到下打印一列    if(start < endY)    {        for(int i = start + 1; i <= endY; ++i)        {            int number = numbers[i][endX];            printNumber(number);        }    }    // 从右到左打印一行    if(start < endX && start < endY)    {        for(int i = endX - 1; i >= start; --i)        {            int number = numbers[endY][i];            printNumber(number);        }    }    // 从下到上打印一列    if(start < endX && start < endY - 1)    {        for(int i = endY - 1; i >= start + 1; --i)        {            int number = numbers[i][start];            printNumber(number);        }    }}void printNumber(int number){    printf("%d\t", number);}

 

转载于:https://www.cnblogs.com/hello-yz/p/3256134.html

你可能感兴趣的文章
1.3为什么学习操作系统?
查看>>
H5_ 表单及其他新增和改良元素
查看>>
MongoDB的学习--文档的查询
查看>>
如何将用户表注册到EBS中
查看>>
codeblocks快捷键
查看>>
Codeforces Round #316 (Div. 2) C. Replacement
查看>>
zjnu1745 DOMINE (状压dp+1*2铺砖)
查看>>
ADS1256的使用
查看>>
Cocos2dx 2.2创建Xcode工程项目
查看>>
如何在Vue2中实现组件props双向绑定
查看>>
Oracle函数大全下载
查看>>
【MySQL】MySQL零碎积累
查看>>
新手推荐:Hadoop安装教程_单机/伪分布式配置_Hadoop-2.7.1/Ubuntu14.04
查看>>
Android录制声音(二)录音输输出格式
查看>>
求解最大公约数
查看>>
从PRISM开始学WPF(九)交互Interaction(弹窗)-更新至Prism7.1
查看>>
771. 宝石与石头(python)
查看>>
luogu P1073 最优贸易
查看>>
javaScript数字、布尔类型的使用方法
查看>>
排球记分员
查看>>