1 条题解

  • 0
    @ 2076-10-11 22:54:24

    循环嵌套生成字母矩阵

    解题思路

    用两层循环按行优先输出。维护一个全局填充编号index,初始0,每输出一个字母就加1。当前位置字符为'A'+index%26,模26让Z之后回到A。

    行结束仅输出换行,不重置index,所以第二行接第一行最后一个字母继续。

    正确性说明

    index始终等于此前已填字符总数,因此index%26正好给出连续循环字母表中的当前偏移。两层循环覆盖n*m个位置且顺序与题面一致,故整个矩阵填充正确。

    易错点

    每行字符之间一个空格;每行不能从A重新开始;输出char类型而非ASCII整数。

    复杂度

    时间O(nm),额外空间O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n, m;
        cin >> n >> m;
        int index = 0;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (j)
                    cout << " ";
                cout << char('A' + index % 26);
                index++;
            }
            cout << "\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    604
    时间
    1000ms
    内存
    256MiB
    难度
    进阶
    标签
    递交数
    5
    已通过
    2
    上传者