順時針列印矩陣

2021-09-19 08:27:57 字數 928 閱讀 7774

題目:輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。

分析:

迴圈結束的條件。第一圈左上角為(0,0),第二圈左上角為(1,1),左上角的行列座標相同,於是我們可以在矩陣中選取左上角為(start,start)的一圈作為分析的目標。

迴圈繼續的條件。對於5 * 5矩陣,最後一圈只有乙個數字,座標為(2,2),且5 > 2 * 2;對於6 * 6矩陣,最後一圈有4個數字,左上角為(2,2),且6 > 2 * 2仍成立。總結出迴圈繼續的條件是columns > startx * 2 && rows > starty * 2。(有點難發現…)

如何列印一圈。列印一圈可以分四步:第一步,左右,第二步,上下,第三步,右左,第四步,下上。每一步根據起始座標和終止座標用乙個迴圈列印。值得注意的是,最後一圈有可能退化成只有一行甚至只有乙個數字,因此需要分析列印每一步的前提條件:第一步,必須,第二步,終止行號》起始行號,第三步,除了要求終止行號》起始行號&&終止列號》起始列號,第四步,終止行號-起始行號》2&&終止列號》起始列號。

public class printmatrix 

int start = 0;

while (start * 2 < columns && start * 2 < rows)

}public void printmatrixincircle(int numbers, int rows, int columns,int start)

//從上到下列印一列

if(endy > start)

}//從右至左列印一行

if(endy > start && endx > start)

}//從下到上列印一列

if(endy - 1 > start && endx > start)}}

}

順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...

順時針列印矩陣

題目 給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。例如 給定矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出應該為 分析 這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...

順時針列印矩陣

from 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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。網上聽說聽到包括autod...