一个函数: 控制从外围打印一圈
另外一个函数控制:打印最外圈,次外圈 、再进去一圈。额。没法描述了~~~~~囧
#include<iostream>
using namespace std;
void myprint(int matrix[][4],int row1,int col1, int row2,int col2);
void revolvePrint(int matrix[][4],int rows, int cols);
//为何在知道解法的情况下花掉了一小时的时间:
//二维数组初始化不确定
//二维数组传参方式不确定
//取二维数组 的大小不确定
//由以上的不确定导致编写的代码有问题 ——)找BUG花费了大量时间
int main(){
int matrix[][4] = {{1,2,3,4},{12,13,14,5},{11,16,15,6},{10,9,8,7}};
int row = sizeof(matrix)/sizeof(matrix[0]);
int col = sizeof(matrix[0])/sizeof(matrix[0][0]);
revolvePrint(matrix,row,col);
return 0;
}
void revolvePrint(int matrix[][4],int rows, int cols){
int row1 = 0;
int col1 = 0;
int row2 = rows-1;
int col2 = cols-1;
while(row1<=row2 && col1 <=col2){
myprint(matrix, row1++,col1++, row2--,col2--);
}
}
void myprint(int matrix[][4],int row1,int col1, int row2,int col2){
//只有一行
if(row1 == row2){
for(int i=col1;i<=col2;i++){
cout << matrix[row1][i] << endl;
}
//只有一列
}else if(col1 == col2){
for(int i=row1;i<=row2;i++){
cout << matrix[i][col1] << endl;
}
}else{
int rowC = row1;
int colC = col1;
//向右走
while(colC != col2){
cout << matrix[rowC][colC] << endl;
colC++;
}
//向下走
while(rowC !=row2){
cout << matrix[rowC][colC] << endl;
rowC++;
}
//向左走
while(colC != col1){
cout << matrix[rowC][colC] << endl;
colC--;
}
// 向上走
while(rowC != row1){
cout << matrix[rowC][colC] << endl;
rowC--;
}
}
}