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


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

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

ABCDEFG

BABCDEF

CBABCDE

DCBABCD

EDCBABC

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

輸入格式
輸入一行,包含兩個整數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 }

 

注意:一定要嚴格控制好每個循環里面的判斷條件,不要造成數組越界或沒有初始化的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM