剑指Offer之面试题20:顺时针打印矩阵

来源:互联网 发布:上海国金网络朱文君 编辑:程序博客网 时间:2024/05/01 20:16


所有代码均通过G++编译器测试,仅为练手纪录。


//面试题20:顺时针打印矩阵

//题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。


//面试题20:顺时针打印矩阵//题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。void PrintMatrixCircle(int **ppNum,int nRow,int nCol,int nBegPos){    int nEndRow = nRow - nBegPos - 1;    int nEndCol = nCol - nBegPos - 1;        //从左到右打印一行    for(int index = nBegPos; index < nEndCol; ++index)    {        LogInfo("Matrix[%d][%d]:%d",nBegPos,index,ppNum[nBegPos][index]);    }        //从上到下打印一列    if(nBegPos < nEndRow)    {        for (int index = nBegPos+1; index < nEndRow; ++index)        {            LogInfo("Matrix[%d][%d]:%d",index,nEndCol,ppNum[index][nEndCol]);        }    }        //从右到左打印一行    if (nBegPos < nEndRow && nBegPos < nEndCol)    {        for(int index = nEndCol-1; index >= nBegPos; --index)        {            LogInfo("Matrix[%d][%d]:%d",nEndRow,index,ppNum[nEndRow][index]);        }    }        //从下到上打印一列    if(nBegPos < nEndRow-1 && nBegPos < nEndCol)    {        for(int index = nEndRow-1; index > nBegPos; --index)        {            LogInfo("Matrix[%d][%d]:%d",index,nBegPos,ppNum[index][nBegPos]);        }    }    }void PrintMatrixClockWisely(int **ppNum,int nRow,int nCol){    if(NULL == ppNum || NULL == *ppNum || nRow <= 0 || nCol <=0)    {        return;    }        int nBegPos = 0;    while(nBegPos*2 < nRow && nBegPos*2 < nCol)    {        PrintMatrixCircle(ppNum,nRow,nCol,nBegPos);    }}

ZhaiPillary

2016-12-25



0 0
原创粉丝点击