19/7每日一题acm:字母旋转

题目如下:

给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:

   A   B   C   D   E   F   G   H

   V   W   X   Y   Z   A   B   I

   U   J   K   L   M   N   C   J

   T   I   H   G   F   E   D   K

   S   R   Q   P   O   N   M   L

输入描述

M为行数,N为列数,其中M,N都为大于0的整数。

输出描述

分行输出相应的结果

输入例子

4 9

输出例子

   A   B   C   D   E   F   G   H   I
   V   W   X   Y   Z   A   B   C   J
   U   J   I   H   G   F   E   D   K
   T   S   R   Q   P   O   N   M   L

分析:这题在于分析字母旋转的规律,必须注意字母的总数为n*m,在建立二维数组map时要先初始化,再对map[0][0]赋值为'A',之后就是while循环了。

代码如下:

#include <iostream>
using namespace std;
 
char map[10000][10000];
 
int main(void)
{
    int i, j, m, n, tot;
    char ch = 'A';
    cin >> m >> n;
 
    for(i = 0; i < m; i++)
       for (j = 0; j < n; j++)
            map[i][j] = '0';
 
    i = j = tot = 0;
    map[i][j] = 'A';
    while (tot < n*m-1)
        {
          while (j+1 < n && map[i][j+1] == '0')
               {
                if (ch >= 90)  ch -= 26;
                j = j + 1;
                ch = ch + 1;
                map[i][j] = ch;
                tot = tot + 1;
               }
          while (i+1 < m && map[i+1][j] == '0')
               {
                if (ch >= 90)  ch -= 26;
                i = i + 1;
                ch = ch + 1;
                map[i][j] = ch;
                tot = tot + 1;
               }
          while (j-1 >= 0 && map[i][j-1] == '0')
               {
                if (ch >= 90)  ch -= 26;
                j = j - 1;
                ch = ch + 1;
                map[i][j] = ch;
                tot = tot + 1;
               }
          while (i-1 >= 0 && map[i-1][j] == '0')
               {
                if (ch >= 90)  ch -= 26;
                i = i - 1;
                ch = ch + 1;
                map[i][j] = ch;
                tot = tot + 1;
               }
        }
 
    for (i = 0; i < m; i++)
    {
       for (j = 0; j < n; j++)
            cout << "   " << map[i][j];
       cout << endl;
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/u012178728/article/details/81124446