用C++實現:特殊字母圖形打印

資源限制
時間限制:1.0s   內存限制:256.0MB
問題描述

利用字母能夠組成一些美麗的圖形,下面給出了一個例子:ios

ABCDEFG數組

BABCDEFspa

CBABCDEcode

DCBABCDblog

EDCBABC內存

這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。ci

輸入格式
輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。
輸出格式
輸出n行,每一個m個字符,爲你的圖形。
樣例輸入
5 7
樣例輸出
ABCDEFG
BABCDEF
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 }

 

注意:必定要嚴格控制好每一個循環裏面的判斷條件,不要形成數組越界或沒有初始化的問題。
相關文章
相關標籤/搜索