参考代码:

import sys


def make(x):
    res = bin(x)
    res = res[2:]
    while len(res) < 5:
        res = '0' + res
    return res


def make_full():
    res = ''
    for char in s:
        if char == ' ':
            res += '00000'
        else:
            res += make(ord(char) - ord('A') + 1)
    return res


def ending():
    for rows in matrix:
        for num in rows:
            print(num, end="")
    sys.exit(0)


row, column, s = input().split()
row = int(row)
column = int(column)
newStr = make_full()
matrix = [[0] * column for _ in range(row)]
index = 0
left, right, top, bottom = 0, column - 1, 0, row - 1
while True:
    for i in range(left, right):
        matrix[top][i], index = newStr[index], index + 1
        if index == len(newStr):
            ending()
    for i in range(top, bottom + 1):
        matrix[i][right], index = newStr[index], index + 1
        if index == len(newStr):
            ending()
    for i in range(right - 1, left, -1):
        matrix[bottom][i], index = newStr[index], index + 1
        if index == len(newStr):
            ending()
    for i in range(bottom, top, -1):
        matrix[i][left], index = newStr[index], index + 1
        if index == len(newStr):
            ending()
    left += 1
    right -= 1
    top += 1
    bottom -= 1


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论