今天去參加了乙個筆試,有乙個筆試題是逐行輸出乙個n*n螺旋矩陣,要求最小空間複雜度,比如4*4,則如下:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
?
當時想了半天,最後終於想到個思路,不過也用了太長時間,沒時間寫具體**了。而且筆試也是手寫**到紙上,這樣**沒法實時改和看結果,而且水平有限,所以很討厭這樣的寫**方式。 回來路上想既然思路都有了,在電腦上應該很快能寫出來,結果折騰了3個多小時才寫好,感覺自己真是弱爆啊。。。對數字太不敏感,尤其是for迴圈是0還是1開頭,到底包不包括邊界,一複雜點兒就暈。。。
自己的思路是這樣的:每圈的長度是可以算出來的,比如上面4*4的矩陣,最外圈長度是12,內圈的長度是4,所以可可以根據第i*j個元素處在那一圈計算其值大小。
最終**如下:
public class matrix
public static string form = null;
public void printmatrix(int dim)
system.out.println();
}for(int i=max+1; i<=dim; i++)
printbottemline(dim-i+1, dim);
for(int j=dim-i;j>0;j--)
system.out.println();}}
public void print(int i)
public int getsize(int level, int dim)
return size;
}public void printtopline(int level, int dim) {
int size =getsize(level-1, dim);
for(int i=0; i
輸出:1 2 3 4 5 6 7
24 25 26 27 28 29 8
23 40 41 42 43 30 9
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13
但感覺**還是太複雜了,看著就暈,不知道誰有更簡單的方法啊,網上簡單搜了一些,沒找到。。。
N N矩陣螺旋列印輸出
例 1 2 3 4 5 6 7 8 9 輸出為如下結果 1 4 7 8 9 6 3 2 5 private void button1 click object sender,eventargs e console.writeline console.writeline this.printarray...
C 的n n螺旋輸出陣列
開發工具與關鍵技術 visual studio c 在這裡用到的二維動態陣列遍歷,通俗易懂。include include factorial.h using namespace std void show int a,int n cout endl cout endl 5 5順序 void fac...
輸出螺旋矩陣
螺旋矩陣 是指乙個呈螺旋狀的矩陣,它的數字由第一行開始到右邊不斷變大,向下變大,向左變大,向上變大,如此迴圈。如圖1 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 輸出螺旋矩陣 author zhanliqing ...