天天看點

藍橋杯-基礎練習 字母圖形

問題描述

利用字母可以組成一些美麗的圖形,下面給出了一個例子:

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;
    cin>>n>>m;
    int array[n][m]; //n行m列
    int i,j;
    for(i=;i<n;i++)//第一列為A,B,C。。。。
        array[i][]=+i;//A的ASCII碼為65

    for(i=;i<m;i++)//第一行為A,B,C。。。。
        array[][i]=+i;

    for(i=;i<n;i++)//從第二行開始每行都是上一行的前一個
        for(j=;j<m;j++)//從第二行開始,每一行從第二位數開始的值都是上一行的右移一位後直接搬下來的
            array[i][j]=array[i-][j-];

    for(i=;i<n;i++){//輸出

        for(j=;j<m;j++){

            cout<<(char)array[i][j];//強制轉換成字元
        }
        cout<<endl;
    }   
    return ;
}
           

方法二:

字母的序号與兩個坐标的差的絕對值有關。
#include<iostream>
#include<cmath>                   //一定别漏了
using namespace std;
int main()
{
    int n,m;
    cin>>n>>m;
    int array[n][m];
    for(int i=;i<n;i++)
        for(int j=;j<m;j++)
            array[i][j]=(+abs(i-j));//很重要

    for(int i=;i<n;i++){

        for(int j=;j<m;j++){

            cout<<(char)array[i][j];
        }
        cout<<endl;
    }           
    return ;
} 
           

其實也沒有很難,關鍵是方法,找到規律就很簡單,加油吧,小夥子!