資源限制 時間限制:1.0s 記憶體限制:256.0MB 問題描述 利用字母可以組成一些美麗的圖形,下麵給出了一個例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。 輸入格式 輸入一行,包含兩 ...
資源限制 時間限制:1.0s 記憶體限制:256.0MB 問題描述
利用字母可以組成一些美麗的圖形,下麵給出了一個例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。
輸入格式 輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。 輸出格式 輸出n行,每個m個字元,為你的圖形。 樣例輸入 5 7 樣例輸出 ABCDEFGBABCDEF
CBABCDE
DCBABCD
EDCBABC 數據規模與約定 1 <= n, m <= 26。 思路:首先觀察樣例圖形,不難得出規律:第一行和第一列都是按照從A往後遞增的順序排列,而其他行則是從第一個字母開始遞減直到A,若此時還沒到m的限制大小,則再從A開始遞增。所以分成3塊處理:第一行,第一列,中間。
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 int n, m; 6 cin >> n >> m; 7 char(*arr)[26] = new char[n][26]; 8 for (int i = 0; i < n; i++) //把每一行第一個字母初始化(第一列單列) 9 { 10 arr[i][0] = 'A' + i; 11 } 12 for (int j = 0; j < m; j++) //第一行單列 13 { 14 arr[0][j] = 'A' + j; 15 } 16 for (int i = 1; i < n; i++) //中間的字母 17 { 18 for (int j = 0; j < m;j++) 19 { 20 arr[i][j] = arr[i][0] - j; 21 if (arr[i][j] == 'A') 22 { 23 for (; j < m - 1; j++) 24 { 25 arr[i][j + 1] = arr[i][j] + 1; 26 } 27 } 28 } 29 } 30 for (int i = 0; i < n; i++) 31 { 32 for (int j = 0; j < m; j++) 33 { 34 cout << arr[i][j]; 35 } 36 cout << endl; 37 }
38 delete[]arr; 39 return 0; 40 }
註意:一定要嚴格控制好每個迴圈裡面的判斷條件,不要造成數組越界或沒有初始化的問題。