分析:把矩陣想象成若干個圈,用乙個迴圈列印矩陣,每次列印矩陣的乙個圈
//從上到下列印一列
if (nendy > nstart) }
//從右到左列印一行
if (nendy > nstart && nendx > nstart) }
//從下到上列印一列
if (nendy -1 > nstart && nendx > nstart)
} }//順時針列印矩陣,行數為rows,列數為columns
void printmatrixclockwisely(int **narr, int rows, int columns)
int nstart = 0;
while (rows>(nstart*2) && columns>(nstart*2))
}int _tmain(int argc, _tchar* argv)
,,,};
int **pp1 = new int*[4];
for (int i=0; i<4; i++)
printmatrixclockwisely(pp1, 4, 4);
cout << endl;
int nmatrix2[1][4] = };
int **pp2 = new int*[1];
for (int i=0; i<1; i++)
printmatrixclockwisely(pp2, 1, 4);
cout << endl;
int nmatrix3[4][1] = ,,,};
int **pp3 = new int*[4];
for (int i=0; i<4; i++)
printmatrixclockwisely(pp3, 4, 1);
cout << endl;
int nmatrix4[2][5] = ;
int **pp4 = new int*[2];
for (int i=0; i<2; i++)
printmatrixclockwisely(pp4, 2, 5);
cout << endl;
system("pause");
return 0;
}執行結果:
面試題20 順時針列印矩陣
1.輸入乙個矩陣,按照從外到裡以順時針的順序列印出每乙個數字。例如 分析 分析迴圈列印的規律可以發現,每次列印都是往矩陣的內部縮小了一周,這樣的話可以可以用兩個座標點來確定這樣乙個矩形的左上角頂點和右下角頂點,然後依據兩個點確定的範圍來列印,按照從左到右,從上到下,從右到左,從下到上的順序列印。原始...
面試題20 順時針列印矩陣
題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 思路 可以看做不斷列印幾個依次縮小的圓圈。第乙個圓圈的起點是 1,1 第二個是 2,2 依次類推。int main int argc,const char argv int row 6 int col 4 int start ...
面試題29 順時針列印矩陣
輸入乙個矩陣,從外到裡以順時針順序依次列印 思路 將其看作一圈一圈列印 開始 start,start 座標,0,0 1,1 2,2 終止列印一圈的條件 cols startx2,rows starty2 如何列印一圈?從左到右 總需要 從上到下 起始行號 終止行號 從右到左 圈內至少兩行兩列 從下到...