2011-08-30 83 views
3

我們有一個n * n矩陣,例如我們取n = 4,矩陣如下。一個遍歷n * n矩陣的c程序

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 

我怎樣才能做到這一點?

+0

功課? ...... – Prescott

+0

是的我很困惑。 – Sunny

回答

2

在這種情況下,「遍歷」可能意味着訪問和打印每個條目。您想從頂部開始以順時針方向通過它。

下面是你需要做的的英語句子的風格描述:

如果你能找到一種方法,去子矩陣的左上角元素,讀出的條目從左到右從上到下排列,從右到上排列的條目讀取,從右到左排在最下面的條目,然後從左下到下排列,您有一個迭代。你可以拿走剩下的子矩陣並繼續直到你什麼也沒有。

另外的提示:

從單元M [X] [Y],

  • M [X] [Y + 1]是小區向RIGHT(只要Y + 1 (只要y> 0)
  • M [x + 1] [y]是單元格BELOW(只要x(x,y) +1 < n)
  • M [x-1] [y]是細胞高於(只要x> 0)
2

首先,嘗試找到一個合適的類型來建模矩陣,以便使用它。至少,它應該是一個類型,它允許你可以通過行/列號來訪問矩陣的元素,這樣就可以基本上在i行和矩陣m similiar的j列訪問元件m(i, j)

假設你找到了這樣的類型,注意你被要求以螺旋(順時針)的方式迭代矩陣。所以這裏有一個重複的例子:除了內部的螺旋線稍小之外,每一輪螺旋都與其他螺旋相同,事實上,每一個螺旋都比前一個小一個數量。