比如矩阵是:
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。则思路就是一圈一圈的输出,比如上面矩阵中里面的一圈是6 7 11 10。
那么在实际编程时,要分情况注意按行和列输出,因为存在内部的"一圈"只是一个点或者一行或者一列的情况,具体见下面代码:
#include<iostream>
#include<string>
using namespace std;
//row为行,col为列
void printcircle(int **matrix,int row,int col,int begin){
int endx = row-1-begin,endy = col-1-begin;
for(int i =begin;i<=endy;i++)
printf("%d ",matrix[begin][i]);
if(begin<endx){
for(int j =begin+1;j<=endx;j++)
printf("%d ",matrix[j][endy]);
}
if(begin<endx && begin<endy){
for(int i =endy-1;i>=begin;i--)
printf("%d ",matrix[endx][i]);
}
if(begin<endx-1){
for(int i = endx-1;i>=begin+1;i--)
printf(&