题目:
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式输出n行,每个m个字符,为你的图形。
样例输入5 7
样例输出ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定1 <= n, m <= 26
代码如下:
#include<iostream>
using namespace std;
int main(){
int n,m,a,b,j;
cin>>n;cin>>m;
char arr[n][m];
for(int i=0; i<n; i++){ //i 控制行数
for(j=0,b=0,a=i; j<m; j++){ //j 控制每行输出个数 a 控制输出的字母类型,通过 65+a实现
if(b==0 && a<=i){
cout<<char(65+a); //A的ascii码是65
if(a==0){b=1;a+=2;} //a+2 是为了和下面的a--抵消一个数,同时避免重复输出 A
a--;
}else if(b==1){ cout<<char(65+a);a++; }
}
cout<<endl;
}
return 0;
}//字母图形,第 i 的第一个字母就是 字母表中的第 i 个字母,先降序,再升序,一共输出 m 个 。
//升序和降序的转折点就是输出 A 即 65+a =65 ,a=0,一旦判断a==0,就不再做降序,一直升序输出。
我这个还是比较繁琐的,看了一下博主的代码,输出的字母有一个特点,第 n行 m列输出的字母是 char( 65+|n-m| ) 。
这样的话,实际代码会简单很多,大家可以试着写一下。