輸出 n 行 m 列字母圖形。規律:第 i 行第 j 列字符為 'A' + |i-j|。
例 n=5,m=7:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
觀察矩陣:
- 主對角線 (i=j) 全為 'A'
- 向右遞增:A→B→C...
- 向左遞增:A→B→C...
- 本質:字符由「到對角線距離」決定 → 'A' + |i-j|
#includeusing namespace std; int main() { int n, m; while (cin >> n >> m) { for (int i=0; i 常見錯誤分析
錯誤思路:以為每行是循環移位。實際上第 6 行應為
FEDCBA...而非循環回ABCDE...。關鍵在於識別「絕對差值」而非「模運算」。複雜度
- 時間:O(n×m),n,m≤26 極快
- 空間:O(1)
擴展變體
- 若字母超過 'Z' 怎麼辦?題目保證 n,m≤26,|i-j|≤25,安全
- 改為小寫:`char('a' + k)`
- 改為數字:`cout << k`
此題核心是發現二維矩陣中「坐標差值決定值」的幾何規律,而非字符串循環移位,體現從數據表面歸納本質模式的能力。