正常8x8矩陣:
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55
56 57 58 59 60 61 62 63
z字形排序8x8矩陣:
0 1 5 6 14 15 27 28
2 4 7 13 16 26 29 42
3 8 12 17 25 30 41 43
9 11 18 24 31 40 44 53
10 19 23 32 39 45 52 54
20 22 33 38 46 51 55 60
21 34 37 47 50 56 59 61
35 36 48 49 57 58 62 63
通過對原始矩陣的分析可得出如下三種規律:
1.如果二維陣列中的元素中縱座標是偶數,且橫座標是0或size-1,那麼遍歷路徑在矩陣中的走向是水平向右移動一格;
2.如果二維陣列中的元素中橫座標是偶數,且縱座標是0或size-1,那麼遍歷路徑在矩陣中的走向是垂直向下移動一格;
3.除以上外,如果橫縱座標之和是偶數,則遍歷路徑向右上角移動一格,如果是奇數,則遍歷路徑向左下角移動一格;
c++**如下:
#include #include using namespace std;
#define size 8
int main()
; int dst[size][size] = ;
int i, j, x, y, values = 0;
//初始化矩陣並列印
for(i = 0,values = 0; i
cout<
} //z字形排序
for(x = 0, i = 0, j = 0; x < size; x++)
//2.如果二維陣列中的元素中橫座標是偶數,且縱座標是0或size-1,那麼遍歷路徑在矩陣中的走向是垂直向下移動一格;
if((j == 0 || j == size-1) && i%2!=0)
//3.如果橫縱座標之和是偶數,則遍歷路徑向右上角移動一格;
if((i+j)%2 == 0)
//4.如果是奇數,則遍歷路徑向左下角移動一格;
else if((i+j)%2 == 1)
}} //列印目標矩陣
for(i = 0; i
cout<
} return 0;
}
Z字形考場編排演算法
在大型考試中學生的座號一般按6 5 z字形編排。如下圖 1 12 13 24 25 2 11 14 23 26 3 10 15 22 27 4 9 16 21 28 5 8 17 20 29 6 7 18 19 30 使用程式如何實現呢?看似毫無頭緒,怎麼辦呢?先看看這樣的排列如何實現 1 7 13...
Z字形編排問題(Zigzag)的一種更簡單的實現
z字形編排問題主要應用在jpeg編碼上,也叫zigzag。主要思路就是從左上角第乙個畫素開始以z字形進行編排。最後得到如下圖的矩陣 在左飛的 演算法之美 隱匿在資料結構背後的原理 中有對z字形編碼的演算法實現。其實現比較複雜,主要思路是定義了兩個二維陣列 乙個二維陣列用來存正常的順序,乙個二維陣列用...
陣列相關 4 4陣列轉置 z字形編排
4 4陣列轉置 includeusing namespace std int main int argc,char argv int i 0 int j 0 int tmp 0 for i 0 i 4 i j i 1 for i 0 i 4 i int i 0 int j 0 const int t...