字母图形
题目
问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个 5 行 7 列的图形,请找出这个图形的规律,并输出一个 n 行 m 列的图形。
输入格式
输入一行,包含两个整数 n 和 m,分别表示你要输出的图形的行数的列数。
输出格式
输出 n 行,每个 m 个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
思路:
根据题目要求:n是行数,m是字符数(即列数)
把样例输出拿出来分析
ABCDEFG | 65 66 67 68 69 70 71 | 65 → 71
BABCDEF | 66 65 66 67 68 69 70 | 66 ← 65 → 70
CBABCDE | 67 66 65 66 67 68 69 | 67 ← 65 → 69
DCBABCD | 68 67 66 65 66 67 68 | 68 ← 65 → 68
EDCBABC | 69 68 67 66 65 66 67 | 69 ← 65 → 67
可以发现规律,每一行都是从A向两边依次散开C B A B C
代码A:
import java.util.Scanner;
class A{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int n,m;
n=scanner.nextInt();
m=scanner.nextInt();
for (int i = 0; i < n && i < 26; i++){
for (int j = 0; j < m && j < 26; j++){
if ('A' + i - j > 'A')
//在A左边执行下面一句
System.out.print( (char)('A' + i - j) );
else
//在A右边执行下面一句
System.out.print( (char)('A' + j - i) );
}
System.out.println();
}
scanner.close();
}
}
代码B:
#include <iostream>
using namespace std;
int main(){
int n, m;
cin >> n >> m;
for (int i = 0; i < n && i < 26; i++){
for (int j = 0; j < m && j < 26; j++){
if ('A' + i - j > 'A')
cout << (char)('A' + i - j);
else
cout << (char)('A' + j - i);
}
cout << endl;
}
return 0;
}
运行结果:


浙公网安备 33010602011771号