剑指OFFER之顺时针打印矩阵(九度OJ1391)
题目描述:
-
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
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.
- 输入:
-
输入可能包含多个测试样例,对于每个测试案例,
输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列。
接下来的m行,每行包括n个整数,表示矩阵的元素,其中每个元素a的取值范围为(1<=a<=10000)。
- 输出:
-
对应每个测试案例,输出一行,
按照从外向里以顺时针的顺序依次打印出每一个数字,每个数字后面都有一个空格。
- 样例输入:
-
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
- 样例输出:
解题思路:
这道题目有一个坑人的地方,但是题目中已经说明了,就是每个数字后面都有一个空格,因此,最后一个数字也是有空格的。
主要的思想是:采用一层一层的剥离输出。我们标记好每次行threshold_m与列threshold_n的范围,然后通过指定输出的顶点,来调用输出函数。
threshold_n = n;
threshold_m = m;
i=;
j=;
while(i<threshold_m && j < threshold_n){
printMatrix(i,j);
i++;
j++;
threshold_n--;
threshold_m--;
}
void printMatrix(int m,int n){
int i=m,j=n;
for( ;j<threshold_n;j++){
printf("%d ",arr[i][j]);
}
j--;
for(i++;i<threshold_m;i++){
printf("%d ",arr[i][j]);
}
i--;
for(j--;j>=n && i!=m;j--){
printf("%d ",arr[i][j]);
}
j++;
for(i--;i>m && j!=threshold_n-;i--){
printf("%d ",arr[i][j]);
}
}
全部代码:
#include <stdio.h>
#define MAXSIZE 1000
int arr[MAXSIZE][MAXSIZE] = {};
int threshold_m = ;
int threshold_n = ;
void printMatrix(int m,int n); int main(){
int m,n,i,j;
while(scanf("%d %d",&m,&n) != EOF && n>= && n<= && m>= && m<=){ for(i=; i<m; i++){
for(j=; j<n; j++)
scanf("%d",&arr[i][j]);
}
threshold_n = n;
threshold_m = m;
i=;
j=;
while(i<threshold_m && j < threshold_n){
printMatrix(i,j);
i++;
j++;
threshold_n--;
threshold_m--;
}
printf("\n");
}
return ;
}
void printMatrix(int m,int n){
int i=m,j=n;
for( ;j<threshold_n;j++){
printf("%d ",arr[i][j]);
}
j--;
for(i++;i<threshold_m;i++){
printf("%d ",arr[i][j]);
}
i--;
for(j--;j>=n && i!=m;j--){
printf("%d ",arr[i][j]);
}
j++;
for(i--;i>m && j!=threshold_n-;i--){
printf("%d ",arr[i][j]);
}
}
/**************************************************************
Problem: 1391
User: xhalo
Language: C
Result: Accepted
Time:560 ms
Memory:4820 kb
****************************************************************/
剑指OFFER之顺时针打印矩阵(九度OJ1391)的更多相关文章
- 《剑指offer》顺时针打印矩阵
本题来自<剑指offer> 顺时针打印矩阵 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 1 ...
- 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题
剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...
- 剑指 Offer 29. 顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出: ...
- 力扣 - 剑指 Offer 29. 顺时针打印矩阵
题目 剑指 Offer 29. 顺时针打印矩阵 思路1 其实就是按照理解题目的意思一步步从外层到内层打印出来,同时将一个外层分成四个部分分步打印 可以用一个变量count来维护当前打印的第几层 判断打 ...
- 【剑指Offer】顺时针打印矩阵 解题报告(Python)
[剑指Offer]顺时针打印矩阵 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 剑指offer得意之作——顺时针打印矩阵
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3 ...
- 【Java】 剑指offer(29) 顺时针打印矩阵
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思 ...
- Go语言实现:【剑指offer】顺时针打印矩阵
该题目来源于牛客网<剑指offer>专题. 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下4 X 4矩阵:1 2 3 4 5 6 7 8 9 10 11 ...
- 剑指offer——29顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
随机推荐
- Android安全问题 程序锁
导读:本文介绍如何实现对应用加锁的功能,无须root权限 某些人有时候会有这样一种需求,小A下载了个软件,只是软件中的美女过于诱惑与暴露,所以他不想让别人知道这是个什么软件,起码不想让别人打开浏 览. ...
- haproxy 规则匹配到了就停止,不会继续匹配下一个
acl url_web_wwm path_beg -i /scan use_backend zjtest7_com if url_web_wwm acl url_static path_end .ht ...
- bzoj3157 3516
太神了,被数学题虐了 orz http://m.blog.csdn.net/blog/skywalkert/43970331 这道题关键是抓住m较小的特点,构造递推解决 ; ..,..] of lon ...
- angularJS $resource与后台restapi的对应关系
REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格.RESTful风格的设计不仅 ...
- OK335xS can't reset with reboot
/*********************************************************************** * OK335xS can't reset * 说明: ...
- UVA 1658 Admiral 海上将军(最小费用流,拆点)
题意: 一个有v个点的有向图,要从点1到点v需要找两条路径,两路径不可经过同一个点(除了1和v点).求这两条路径的最小费用(保证有解). 分析: 难在建图,其他套模板. 此图给的是超级复杂图,两个点之 ...
- 数组中所有重复次数大于等于minTimes的数字
class Program { static void Main(string[] args) { int[] input = { 1, 1, 1, 2, 2, 5, 2, 4, 9, 9, 20 } ...
- jquery 图片上传本地预览V1.2
基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari 代码进行小小的压缩 如果看源码 自己解压就行了 版本已升级 修复jquery版本问题 支持任意jqu ...
- dynamips虚拟服务:找不到指定设备
刚开始接触dynamips,属于新手, 之前是可以正常使用dynamips的,但不知道什么原因就出现这样的问题 果断重新安装,之后可以正常使用
- 第一个GTK+程序
在这一章节中,我们将开始编写第一个GTK+程序. 超级简单的例子 我们要“制造”一个超级简单的GTK+程序.就是显示一个空白的窗口. #include <gtk/gtk.h> int ma ...