对数组,容器,二维数组遍历操作时,遵循左闭右开原则可以使代码更有序,尤其是在二分法代码中。
典型的问题:给定一个mxn的二维数组,按照如图所示的方式遍历输出。
这个问题如果不使用左闭右开的原则书写代码,则常常会使调试代码陷入混乱。因为遍历循环的边界控制原则不一致出现各种bug,因此要使用统一的左闭右开原则控制代码。
要注意以下3种情况。
void traverseMatrix(int **mat, int m, int n){ //二维数组形参传入 **mat
int startx=0, starty=0, endx=m-1, endy=n-1;//m,n是数组的维度
int i,j;
while(startx<=endx && starty<=endy){
for(j=starty; j<endy; ++j){cout<<mat[startx][j];}
if(startx==endx){ cout<<mat[startx][endy]; return ;}
for(i=startx; i<endx; ++i){cout<<mat[i][endy];}
if(starty==endy){ cout<<mat[endx][starty]; return ;}
for(;j>starty; --j){ cout<<mat[endx][j];}
f