螺旋加密(多维数组 C++)

该博客介绍了一种使用C++实现的螺旋矩阵加密技术,适用于大写字母和空格的文本信息。首先,将字符转换为其ASCII值减64后的5位二进制数,然后按照螺旋顺序填充预先约定大小的矩阵。最后,将填充后的矩阵按行连接成二进制串,完成加密。博主分享了解题思路,包括如何进行二进制转换和回形填充,强调了处理边界条件和避免死循环的重要性。
摘要由CSDN通过智能技术生成

螺旋加密
总时间限制: 1000ms 内存限制: 65536kB
描述
Chip和Dale发明了一种文本信息加密技术。他们事先秘密约定好矩阵的行数和列数。接着,将字符按如下方式编码:

  1. 所有文本只包含大写字母和空格。

  2. 每个字符均赋予一个数值:空格=0,A=1,B=2,……,Y=25,Z=26。

按照下图所示的方式,将每个字符对应数值的5位二进制数依次填入矩阵。最后用0将矩阵补充完整。例如,对于信息“ACM”,行列数均为4时,矩阵将被填充为:

这里写图片描述

将矩阵中的数字按行连起来形成数字串,完成加密。例子中的信息最终会被加密为:0000110100101100。

输入
一行。首先是两个整数R(1≤R≤20)和C(1≤C≤20),表示行数和列数。之后是一个只包含大写字母和空格的字符串。字符串的长度≤(R*C)/5。R和C之间以及C和字符串之间均用单个空格隔开。
输出
一行,为加密后的二进制串。注意你可能需要用0将矩阵补充完整。
样例输入

4 4 ACM

样例输出

0000110100101100

思路点拔:本题是二维数组中的一道非常经典,有难度的题目,首先,输入的是一个字符串,就看样例,A=00001,换为十进制就是1,C=00011,换成十进制就是3,M=01101,换成十进制就是13,而A的阿斯克码等于65,C的阿斯克码等于67,M的阿斯克码等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值