AcWing 756 蛇形矩陣

2021-10-19 08:50:14 字數 2170 閱讀 9468

輸入兩個整數n和m,輸出乙個n行m列的矩陣,將數字 1 到 n*m 按照回字蛇形填充至矩陣中。

具體矩陣形式可參考樣例。

輸入共一行,包含兩個整數n和m。

輸出滿足要求的矩陣。

矩陣佔n行,每行包含m個空格隔開的整數。

1≤n,m≤100

3

3

123

8947

65

第一種模擬法,同basic level 1050 螺旋矩陣

第二種模擬法,利用 left right top bottom 四個變數 來表示 這個矩形的邊界

第三種座標法通過座標來實現順時針旋轉撞牆有兩種可能一種是到達邊界另一種是重複。

第三種方法通用,第二種方法好理解,第一中方法不建議。

模擬一

#include

using

namespace std;

const

int maxn =

110;

int array_1[maxn]

[maxn]

, array_2[maxn * maxn]

;int

main()

int level = n /

2+ n %2;

for(

int i =

0; i < level; i++

)for

(int j = i +

1; j < n - i -

1&& t < n * m; j++

)for

(int j = m - i -

1; j >= i && t < n * m; j--

)for

(int j = n - i -

2; j > i && t < n * m; j--)}

for(

int i =

0; i < n; i++

) cout << endl;

}return0;

}

模擬二

#include

using

namespace std;

const

int maxn =

110;

int array_[maxn]

[maxn]

;int

main()

for(

int i = top +

1; i <= bottom; i++

)for

(int i = right -

1; i >= left && top < bottom; i--

)for

(int i = bottom -

1; i > top && left < right; i--

) left++

, right--

, top++

, bottom--;}

for(

int i =

0; i < n; i++

) cout << endl;

}return0;

}

座標法

#include

using

namespace std;

const

int maxn =

110;

int array_[maxn]

[maxn]

;int

main()

, dy=

; cin >> n >> m;

for(

int i =

1; i <= n * m; i++

) x = a, y = b;

}for

(int i =

0; i < n; i++

) cout << endl;

}return0;

}

acwing題解

題目鏈結

AcWing 756 蛇形矩陣

題解輸入兩個整數n和m,輸出乙個n行m列的矩陣,將數字1到n m按照回字蛇形填充至矩陣中。具體矩陣形式可參考樣例。輸入共一行,包含兩個整數n和m。輸出滿足要求的矩陣。矩陣佔n行,每行包含m個空格隔開的整數。1 n,m 100 3 3 1 2 3 8 9 4 7 6 5 本題主要是考察了陣列,我們可以...

AcWing 756 蛇形矩陣

輸入兩個整數n和m,輸出乙個n行m列的矩陣,將數字 1 到 n m 按照回字蛇形填充至矩陣中。具體矩陣形式可參考樣例。輸入格式 輸入共一行,包含兩個整數n和m。輸出格式 輸出滿足要求的矩陣。矩陣佔n行,每行包含m個空格隔開的整數。資料範圍 1 n,m 100 輸入樣例 3 3輸出樣例 123 894...

ACwing 756蛇形矩陣

題目描述 輸入兩個整數n和m,輸出乙個n行m列的矩陣,將數字 1 到 n m 按照回字蛇形填充至矩陣中。具體矩陣形式可參考樣例。輸入格式 輸入共一行,包含兩個整數n和m。輸出格式 輸出滿足要求的矩陣。矩陣佔n行,每行包含m個空格隔開的整數。資料範圍 1 n,m 1001 n,m 100 輸入樣例 3...