按之字型遍歷乙個矩陣。
之字形遍歷順序如下圖所示:
處理乙個二維矩陣一定不能陷入繁瑣的細節處理中,如果此題思考方向為到了 2 後如何轉向 5,到了 5 後如何轉向 9,到了 9 後又如何轉向 6,這樣程式設計會變得異常複雜。應該抽象出子過程,本題的子過程就是遍歷矩陣斜著的一行,只不過每隔一行遍歷方向改變。如下圖所示:
o1 和 o2 代表斜著一行的兩個端點。根據遍歷方向,從乙個端點移動到另乙個端點即可。每遍歷完一行,o1 向右移動一格,o2 向左移動一格。當移動到邊界時,o1 轉為向下移動,o2 轉為向右移動。兩端點相遇,遍歷結束。
class
code_08_zigzagprintmatrix
system.out.
println()
;}public
static
void
printlevel
(int
m,int x1,
int y1,
int dr,
int dc,
boolean f)
}else}}
public
static
void
main
(string[
] args),,
};// 列印原矩陣
system.out.
println
("原矩陣:");
for(
int i =
0; i < matrix.length; i++
)else
} system.out.
println()
;}// zigzag 遍歷
system.out.
println
("zigzag:");
printmatrixzigzag
(matrix);}
}
zigzag模式提取矩陣元素
zigzag模式提取矩陣元素 zouxy09 qq.com 這節博文只是為了上傳個 而已。希望對需要的人有用。zig zag模式如下圖所示。它可以用來按照以下的順序來提取乙個矩陣的元素。這個東西用在哪呢?用在離散余弦變換的係數提取裡面。離散余弦變換 dct 是種影象壓縮演算法,jpeg 2000好像...
CVTE筆試題2 生成zigzag矩陣
其幾天參加的cvte兩道筆試題,第二道是生成zigzag矩陣,具體如下 給定陣列輸出 1,2,6 3,5,7 4,8,9 vector to zigzagmatrix vector data int temp sqrt n if temp temp n throw new exception 輸入陣...
zigzag矩陣按照之字形線路產生方法(C )
includeusing namespace std void zigzag int m,int n else if prestep 4 else if prestep 4 上一步右上方向走,則現在向右走一步 else if prestep 1 上一步向右走,現在需要向左下走一步 else else...