

注解
1、模拟。读懂题目,理解整个加密解密的过程。
2、关键是如何根据加密后的字符串进行解密,行列如何匹配。
代码
#include <iostream>
using namespace std;
int main() {
int col;
cin>>col;
while(col) {
string s;
cin>>s;
string sub;
int row = s.length()/col;
char c[row][col];
int rowNum = 0;
while(rowNum*col<s.length()) {
sub = s.substr(rowNum*col, col);
if(rowNum%2==0) {
for(int i=0; i<col; i++) {
c[rowNum][i] = sub.at(i);
}
rowNum++;
} else {
for(int i=col-1; i>=0; i--) {
c[rowNum][col-1-i] = sub.at(i);
}
rowNum++;
}
}
for(int i=0; i<col; i++) {
for(int j=0; j<row; j++) {
cout<<c[j][i];
}
}
cout<<endl;
cin>>col;
}
return 0;
}
结果

本文详细解析了一种基于行列匹配的加密解密算法,重点介绍了如何根据加密后的字符串逆向还原原始信息。通过实例演示了读取输入参数,确定行数和列数,以及根据特定规则填充和读取字符矩阵来完成解密过程。
595

被折叠的 条评论
为什么被折叠?



