题解 | #顺时针打印矩阵#

顺时针打印矩阵

http://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

void print_core(int** matrix,int *a, int R,int C,int begin_r,int begin_c)
{
    int r,c;
    
    if((2*begin_r)>R-1||(2*begin_c)>C-1)//矩阵中没有元素了
        return;
        
        
    if(R-2*begin_r==1)               //还剩一行
    {
       for(c=begin_c;c<C-begin_c;c++)
           a[c-begin_c]=matrix[begin_r][c];
        return;
    }
    else if(C-2*begin_c==1)          //还剩一列
    {
       for(r=begin_r;r<R-begin_r;r++)
           a[r-begin_r]=matrix[r][begin_c];
        return;
    }
    									//顺时针打印
    for(c=begin_c;c<C-begin_c-1;c++)
    {
        *a = matrix[begin_r][c];
        a++;
    }
    for(r=begin_r;r<R-begin_r-1;r++)
    {
        *a = matrix[r][C-begin_c-1];
        a++;
    }
    for(c=C-begin_c-1;c>begin_c;c--)
    {
        *a = matrix[R-begin_r-1][c];
        a++;
    }
    for(r=R-begin_r-1;r>begin_r;r--)
    {
        *a = matrix[r][begin_c];
        a++;
    }
    
    print_core(matrix,a,R,C,begin_r+1,begin_c+1);//打印剩下的部分
    
}

int* printMatrix(int** matrix, int matrixRowLen, int* matrixColLen, int* returnSize ) {
    int *a=(int*)malloc(sizeof(int)*(matrixRowLen*(*matrixColLen)));
    *returnSize=matrixRowLen*(*matrixColLen);
    if(*returnSize==0)
        return NULL;
    print_core(matrix,a,matrixRowLen,(*matrixColLen),0,0);
    return a;
}
全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务