题目: 矩阵Z字形扫描
对于任意一个m*n的矩阵A,规定从左上角(0,0)开始,按照距离左上角(0,0)先近后远的顺序进行Z字形扫描,最终到达右下角(m-1,n-1)的位置。
请实现一个函数,输入参数为两个整数m和n,打印输出n*m行,其中第k行为第k次扫描的位置。例如当m=4,n=5的时候,扫描顺序如图所示,输出结果为:
(0,0)
(0,1)
(1,0)
(2,0)
...
(2,4)
(3,4)
只写了一个很简单的各种判断的代码,代码如下:
void printZScan(int m, int n){
if( m <=0 || n <= 0){
return;
}
bool flag = true; //到拐点的标志
bool upFlag = true; //往上走还是往下走的标志
int i=0,j=0;
while(1){
printf("(%d,%d)\n",i,j);
if(i == m-1 && j == n-1){
break;
}
if(i == 0){
if(flag){
flag = false;
if(j!=n-1){
++j;
}else{
++i;
}
}else{
++i;
--j