顺时针打印矩阵
来源:互联网 发布:js 时间间隔秒 编辑:程序博客网 时间:2024/06/17 06:02
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
#include <iostream>using namespace std;void PrintNumber(int num){printf("%d\t", num);}void PrintMatrix(int** number,int colums, int rows, int start){int endX = colums -1 -start;int endY = rows -1 - start;for(int i = start ; i <= endX; i++){int num = number[start][i];PrintNumber(num);}if(start < endX){for(int i = start+1; i <= endY; i++){int num = number[i][endX];PrintNumber(num);}}if(start < endX && start < endY){for(int i = endX -1;i >= start; i--){int num = number[endY][i];PrintNumber(num);}}if(start < endY && endX -1 > start){for(int i = endY-1 ; i >= start + 1;i--){int num = number[i][start];PrintNumber(num);}}}void PrintMatrixClockWisely(int** number, int colums, int rows){if(number == NULL || colums <= 0 || rows <= 0)return;int start = 0;while(colums > 2*start && rows > 2*start){PrintMatrix(number, colums, rows, start);start++;}}
// ====================测试代码====================void Test(int columns, int rows){ printf("Test Begin: %d columns, %d rows.\n", columns, rows); if(columns < 1 || rows < 1) return; int** numbers = new int*[rows]; for(int i = 0; i < rows; ++i) { numbers[i] = new int[columns]; for(int j = 0; j < columns; ++j) { numbers[i][j] = i * columns + j + 1; } } PrintMatrixClockWisely(numbers, columns, rows); printf("\n"); for(int i = 0; i < rows; ++i) delete[] (int*)numbers[i]; delete[] numbers;}int main(int argc, char* argv[]){ /* 1 */ Test(1, 1); /* 1 2 3 4 */ Test(2, 2); /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 */ Test(4, 4); /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 */ Test(5, 5); /* 1 2 3 4 5 */ Test(1, 5); /* 1 2 3 4 5 6 7 8 9 10 */ Test(2, 5); /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ Test(3, 5); /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 */ Test(4, 5); /* 1 2 3 4 5 */ Test(5, 1); /* 1 2 3 4 5 6 7 8 9 10 */ Test(5, 2); /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */ Test(5, 3); /* 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 */ Test(5, 4); return 0;}
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- Shell脚本学习
- MVC 登陆验证码
- Windows中SSH Secure Shell Client 的使用方法
- android:descendantFocusability用法简析
- 强大的vim配置文件,让编程更随意
- 顺时针打印矩阵
- SQL 各种锁等待类型 wait type
- javascript判断变量是否存在
- java线程interrupt()方法和线程终止方式
- mybatis入门——mybatis使用实例
- JDBC 数据库连接池 -Dbcp -C3p0
- Java 获取web项目根目录 RootPath
- 设计模式之抽象工厂模式---abstract factory
- Velocity学习整理