輸入兩個整數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...