【 Algorithm】顺序打印矩阵——美团四面

来源:互联网 发布:必向东java 编辑:程序博客网 时间:2024/04/30 01:07
/********************************顺时针打印矩阵:思路:1.首先判断循环条件:每次一圈开始时,左上角横纵坐标一样,所以可以作为循环条件col>2*start,row>2*start2.打印每一圈   A.第一步总是要打的   B.第二步需要有两行才进行   C.第三步至少两行两列   D.第四步至少三行两列***********************************/#include "stdafx.h"#include<iostream>using namespace std;void printMatrixInCircle(int ** number,int cols,int rows,int start);void PrintMatrix(int ** number,int rows,int cols){if(number == NULL || rows<0 || cols<0)return;int start = 0;while(cols > start*2 && rows > start*2 ){printMatrixInCircle(number,cols,rows,start);start++;}}void printMatrixInCircle(int ** number,int cols,int rows,int start){int endX = cols-1-start;int endY = rows-1-start;//打印第一步for(int i = start;i<=endX;i++){cout << number[start][i];}cout <<endl;//打印第二步if(start < endY){for(int i = start+1;i <= endY;i++)cout << number[i][endX];}cout <<endl;//打印第三步if(start<endX && start <endX){for(int i = endX-1;i>=start;i--)cout << number[endY][i];}cout <<endl;//打印第四步if(start < endX && start < endY - 1){for(int i = endY-1;i>start;i--)cout << number[i][start];}}int _tmain(int argc, _TCHAR* argv[]){int n ;cin >>n;int ** arr=new int*[n];for(int i=0;i<n;i++){arr[i] = new int [n];}cin.clear();for(int i = 0;i<n;i++){for(int j = 0;j<n;j++){cin >>arr[i][j];}}PrintMatrix(arr,n,n);system("pause");return 0;}

0 0
原创粉丝点击