注解
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;
}