【牛客刷题专栏】0x27:JZ29 顺时针打印矩阵(C语言编程题)

news/2024/11/8 6:29:02/

前言

  • 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失
  • 个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

目录

  • 前言
  • 问题描述:
  • 举例:
  • 解法思路:
  • 代码结果:
  • 结束语


问题描述:

  • 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵:

[[1,2,3,4],
[5,6,7,8],
[9,10,11,12],
[13,14,15,16]]

  • 则依次打印出数字

[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]

  • 数据范围:
    0 <= matrix.length <= 100
    0 <= matrix[i].length <= 100

举例:

//示例1:
//输入:
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
//返回值:
[1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10]
//==========================
//示例2:
//输入:
[[1,2,3,1],[4,5,6,1],[4,5,6,1]]
//返回值:
[1,2,3,1,1,1,6,5,4,4,5,6]

解法思路:

  • 可以将矩阵看成若干层,首先打印最外层的元素,其次打印次外层的元素,直到打印最内层的元素。

代码结果:

void print_core(int** matrix,int *a, int R,int C,int begin_r,int begin_c)
{int r,c;if((2*begin_r)>R-1||(2*begin_c)>C-1)//矩阵中没有元素了return;if(R-2*begin_r==1)               //还剩一行{for(c=begin_c;c<C-begin_c;c++)a[c-begin_c]=matrix[begin_r][c];return;}else if(C-2*begin_c==1)          //还剩一列{for(r=begin_r;r<R-begin_r;r++)a[r-begin_r]=matrix[r][begin_c];return;}//顺时针打印for(c=begin_c;c<C-begin_c-1;c++){*a = matrix[begin_r][c];a++;}for(r=begin_r;r<R-begin_r-1;r++){*a = matrix[r][C-begin_c-1];a++;}for(c=C-begin_c-1;c>begin_c;c--){*a = matrix[R-begin_r-1][c];a++;}for(r=R-begin_r-1;r>begin_r;r--){*a = matrix[r][begin_c];a++;}print_core(matrix,a,R,C,begin_r+1,begin_c+1);//打印剩下的部分}int* printMatrix(int** matrix, int matrixRowLen, int* matrixColLen, int* returnSize ) {int *a=(int*)malloc(sizeof(int)*(matrixRowLen*(*matrixColLen)));*returnSize=matrixRowLen*(*matrixColLen);if(*returnSize==0)return NULL;print_core(matrix,a,matrixRowLen,(*matrixColLen),0,0);return a;
}


结束语

  • 以上就是该C语言编程题的内容。可以在牛客尝试刷几道题目来练习实践。牛客网刷题(点击可以跳转),可以尝试注册使用。
  • 题目来自:牛客/题库 / 在线编程 / 剑指offer:
    在这里插入图片描述

http://www.ppmy.cn/news/64088.html

相关文章

半导体热处理设备微环境中的精密微正压控制解决方案

摘要&#xff1a;针对半导体热处理设备微环境中的微正压精密控制&#xff0c;本文分析了现有技术造成微正压控制不稳定的原因&#xff0c;提出了相应的解决方案。解决方案主要是采用绝对电容真空计替代压差计&#xff0c;采用真空低漏率的高速电动针阀和电动球阀替代气体质量流…

Flask框架之路由与蓝图的使用

路由与蓝图 路由路由概述路由的基本使用查看路由信息url_map对象命令行方式 HTTP请求方法 蓝图概述蓝图的基本使用蓝图的拆分指定蓝图的url前缀蓝图构造URL蓝图静态文件蓝图模板目录 路由 路由概述 在Flask中&#xff0c;路由用于将HTTP请求与特定的Python函数相匹配。通过定义…

使用ChatGPT辅助学习——让你的学生主动找到学习的方法!

ChatGPT就像一座巨大的金矿&#xff0c;能挖到多少金子&#xff0c;完全取决于你的思维、认知和行动力。 当大部分人还在观望&#xff0c;或者拿着ChatGPT随便玩一玩的时候。 有的人&#xff0c;已经快速把它切入垂直领域&#xff0c;开始深耕。 如果你的孩子或者学生正在上初…

Java学习(11):Java实现图书馆书库管理系统

接上次博客&#xff1a;Java学习&#xff08;10&#xff09;多接口、接口的继承、抽象类和接口的区别、Object类【toString 、equals、hashcode】、接口实例 【compareTo、clone 】、浅拷贝和深拷贝、内部类_di-Dora的博客-CSDN博客 我们要想完成这个书库管理系统&#xff0c;…

PostgreSQL-字符串类型

字符串类型是最常用的几种数据类型之一&#xff0c;分为变长和定长等类型。 字符串类型介绍 类型名称描述character varying(n) varchar(n)变长&#xff0c;最大为1GB。存储空间为&#xff1a;4实际的字符串长度。与MySQL中的varchar(n)或text(n)&#xff0c;以及oracle中的v…

听劝 千万不要盲目自学网络安全

听劝 不要什么盲目的学网络安全。 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09; 了解网络安全相关法律法规 熟悉基本概念&#xff08;SQL 注入、上传、XSS、CSRF、一句话木马等&#xff09;。 通过关键字&#xff08;SQL 注入、…

全方面掌握Requests库的使用

全方面掌握Requests库的使用 Requests库是一个常用的Python第三方库&#xff0c;它简化了HTTP请求发送和响应的处理。本文将全方面介绍Requests库的使用&#xff0c;包括基本请求、参数传递、响应处理、会话管理、代理设置以及异常处理等方面。 基本请求 使用Requests库发送…

鲁大师智能化评测新项目——鲁大师真续航测试1.0正式发布

随着社会的高速发展&#xff0c;人们出行的交通工具正变得多种多样&#xff0c;有电单车、摩托车、自行车、两轮平衡车、甚至滑板等。不过如我们所见&#xff0c;电动两轮车已经成为了大多数近途出行用户的选择&#xff0c;因电单车具有方便、快捷、灵活、小巧、易停放等优点而…