面试题20 顺时针打印矩阵
来源:互联网 发布:icmp端口53 编辑:程序博客网 时间:2024/05/16 12:31
分析:把矩阵想象成若干个圈,用一个循环打印矩阵,每次打印矩阵的一个圈
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- void PrintMatrixIncircle(int **nArr, int rows, int columns, int nStart)
- {
- int nEndX = columns - 1 -nStart;
- int nEndY = rows - 1 -nStart;
- //从左到右打印一行
- for (int i=nStart; i<=nEndX; i++)
- {
- cout << nArr[nStart][i] << " ";
- }
- //从上到下打印一列
- if (nEndY > nStart)
- {
- for (int j=nStart+1; j<=nEndY; j++)
- {
- cout << nArr[j][nEndX] << " ";
- }
- }
- //从右到左打印一行
- if (nEndY > nStart && nEndX > nStart)
- {
- for (int t=nEndX-1; t>=nStart; t--)
- {
- cout << nArr[nEndY][t] << " ";
- }
- }
- //从下到上打印一列
- if (nEndY -1 > nStart && nEndX > nStart)
- {
- for (int n=nEndY-1; n>=nStart+1; n--)
- {
- cout << nArr[n][nStart] << " ";
- }
- }
- }
- //顺时针打印矩阵,行数为rows,列数为columns
- void PrintMatrixClockWisely(int **nArr, int rows, int columns)
- {
- if (nArr == NULL || rows <= 0 || columns <= 0)
- {
- return;
- }
- int nStart = 0;
- while (rows>(nStart*2) && columns>(nStart*2))
- {
- PrintMatrixIncircle(nArr, rows, columns, nStart);
- nStart++;
- }
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- int nMatrix1[4][4] = {{1,2,3,4},{5, 6, 7, 8},{9, 10, 11, 12},{13, 14, 15, 16}};
- int **pp1 = new int*[4];
- for (int i=0; i<4; i++)
- {
- pp1[i] = nMatrix1[i];
- }
- PrintMatrixClockWisely(pp1, 4, 4);
- cout << endl;
- int nMatrix2[1][4] = {{1,2,3,4}};
- int **pp2 = new int*[1];
- for (int i=0; i<1; i++)
- {
- pp2[i] = nMatrix2[i];
- }
- PrintMatrixClockWisely(pp2, 1, 4);
- cout << endl;
- int nMatrix3[4][1] = {{1},{2},{3},{4}};
- int **pp3 = new int*[4];
- for (int i=0; i<4; i++)
- {
- pp3[i] = nMatrix3[i];
- }
- PrintMatrixClockWisely(pp3, 4, 1);
- cout << endl;
- int nMatrix4[2][5] = {1,2,3,4,5,6,7,8,9,10};
- int **pp4 = new int*[2];
- for (int i=0; i<2; i++)
- {
- pp4[i] = nMatrix4[i];
- }
- PrintMatrixClockWisely(pp4, 2, 5);
- cout << endl;
- system("pause");
- return 0;
- }
运行结果:
0 0
- 面试题20:顺时针打印矩阵 ***
- 面试题20 顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20顺时针打印矩阵
- 【面试题20】顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 面试题 20: 顺时针打印矩阵
- 剑指offer面试题20顺时针打印矩阵
- win7取消驱动数字签名验证
- XML换行符的问题
- JS判断
- SQLite之replace语句的行为
- Verilog延时:specify的用法
- 面试题20 顺时针打印矩阵
- 国美做虚假广告,是真是假?
- 两层容器的position 之间的关系
- mac系统下安装tomcat,并启动。ideaIU工具的使用
- 微软为什么要 25 亿美元收购游戏 Minecraft 的开发商 Mojang?
- JAVA编程思想-第十二章 通过异常处理错误
- Linq 多条件模糊查询的方法
- swift UITableView 表视图(七)【转自http://blog.csdn.net/zhang_biao_1991/article/details/36015695】
- VCard(.VCF) 2.1(rfc-2426)标准通信薄基本格式