蓝桥杯基础-字母图案-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的位置的行列差绝对值总为0,如第一次出现在0行0列abs(0 - 0)=0,第二次出现在1行1列abs(1 - 1)=0…每个B的位置的行列差绝对值总为1,如第一次出现在0行1列abs(0 - 1)=1,第二次出现在1行0列abs(1 - 0)=0…以此类推,C的绝对值为2,D的绝对值为3…Z的绝对值为25,即每个行列差绝对值对应的字母必然是相同的。所以题目要求等价为求每个位置的行列差的绝对值,然后加上基础A,就是我们需要的那个字母。此方法的具体时间复杂度为O(nm),代码如下:

#include<stdio.h>
//#include<math.h>
int main(){
    
    
    int n,m,j,i;
    scanf("%d%d",&n,&m);
for(i=0;i<n;i++){
    
    

    for(j=0;j<m;j++){
    
    
    char c=(char)(abs(i-j)+'A');
    printf("%c",c);
    }
    printf("\n");

}
return 0;
}

参考博客:
https://blog.csdn.net/TreeCode/article/details/107925865

猜你喜欢

转载自blog.csdn.net/weixin_43959743/article/details/112852482