用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 }

 

注意:一定要严格控制好每个循环里面的判断条件,不要造成数组越界或没有初始化的问题。

__EOF__

本文作者神楽桜KaguraSakura
本文链接https://www.cnblogs.com/KaguraSakura/p/12495008.html
关于博主:hello~好久不见,喜欢的话点个赞吧
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   神楽桜KaguraSakura  阅读(1813)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示