“蓝桥杯”练习系统 - 基础练习 - 字母图形

思路1:

先设法输出前缀(逆序的部分), 再输出后面的部分. 特别要小心范围.

 1 #include <iostream>
 2 using namespace std;
 3 
 4 char letters[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 5 
 6 int main()
 7 {
 8     ios::sync_with_stdio(false);
 9     cin.tie(0);
10 
11     int n, m;
12     cin >> n >> m;
13     for (int i = 0; i < n; i++) {
14         for (int pre = 0; pre < min(i, m); pre++)
15             cout << letters[i - pre];
16         for (int suf = 0; suf < m - i; suf++)
17             cout << letters[suf];
18         cout << endl;
19     }
20 
21     return 0;
22 }

 

思路2:

更深一步找规律会发现, 在矩阵中, 同一字母对应的横纵坐标之差的绝对值是相等且唯一的. 可用两重循环枚举所有坐标, 计算坐标差, 再输出对应的字符.

 1 #include <iostream>
 2 #include <cmath>
 3 using namespace std;
 4 
 5 char letters[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 6 
 7 int main()
 8 {
 9     ios::sync_with_stdio(false);
10     cin.tie(0);
11 
12     int n, m;
13     cin >> n >> m;
14     for (int x = 0; x < n; x++) {
15         for (int y = 0; y < m; y++)
16             cout << letters[abs(x - y)];
17         cout << endl;
18     }
19 
20     return 0;
21 }
posted @ 2020-01-31 22:26  域Anton  阅读(140)  评论(0)    收藏  举报