问题描述:
输入一个矩阵,按照从外向内以顺时针的顺序一次打印出每一个数字。
实现代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int R,C;
void doPrintMaxtriClock(int Matri[R][C],int start,int column,int row){
int endX = column-start-1;
int endY=row-start-1;
int i ;
for(i=start;i<=endX;i++){
printf("%d, ",Matri[start][i]);
}
if(start<endY){
for(i=start+1;i<=endY;i++){
printf("%d, ",Matri[i][endX]);
}
}
if(start<endX && start < endY){
for(i=endX-1;i>=start;--i){
printf("%d, ",Matri[endY][i]);
}
}
if(start<endY-1 && start <endX){
for(i=endY-1;i>start;--i){
printf("%d, ",Matri[i][start]);
}
}
}
void PrintMaxtriClock(int **Matri,int column,int row){
if(Matri==NULL || column<=0 || row <=0){
return ;
}
int start = 0;
while(column>2*start && row>2*start){
doPrintMaxtriClock(Matri,start,column,row);
++start;
}
return ;
}
int main(int argc, char *argv[])
{
int M[4][4]={
{
1,2,3,4
},{
5,6,7,8
},{
9,10,11,12
},{
13,14,15,16
}
};
int column = sizeof(M[0])/sizeof(int);
int row = sizeof(M)/sizeof(M[0]);
R=row;C=column;
int i,j;
for(i=0;i<row;i++){
for(j=0;j<column;j++){
printf("%d ",M[i][j]);
}
}
printf("\ncolumn is:%d row is:%d",column,row);
printf("\nthe folow is sort by rule :\n");
PrintMaxtriClock(M,column,row);
return 0;
}
参考资料:
剑指offer
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/51372256
作者:WSYW126