20_反反复复
来源:互联网 发布:美容院会计软件 编辑:程序博客网 时间:2024/05/01 20:34
/*Name: 20_反反复复Author: 巧若拙 Description: 描述Mo和Larry发明了一种信息加密方法。他们首先决定好列数,然后将信息(只包含字母)从上往下依次填入各列,并在末尾补充一些随机字母使其成为一个完整的字母矩阵。例如,若信息是“There's no place like home on a snowy night”并且有5列,Mo会写成:t o i o yh p k n ne l e a ir a h s ge c o n hs e m o tn l e w x注意Mo只会填入字母,且全部是小写形式。在这个例子中,Mo用字母“x”填充了信息使之成为一个完整的矩阵,当然他使用任何字母都是可以的。Mo根据这个矩阵重写信息:首先从左到右写下第一行,然后从右到左写下第二行,再从左到右写下第三行……以此左右交替地从上到下写下各行字母,形成新的字符串。这样,例子中的信息就被加密为:toioynnkpheleaigshareconhtomesnlewx。你的工作是帮助Larry从加密后的信息中还原出原始信息(包括填充的字母)。输入第一行包含一个整数(范围2到20),表示使用的列数。第二行是一个长度不超过200的字符串。输出一行,即原始信息。样例输入5toioynnkpheleaigshareconhtomesnlewx样例输出theresnoplacelikehomeonasnowynightx*/#include <iostream>#include <string>using namespace std;const int M = 20;const int N = 100;char A[N][M], B[N][M];int main() {string s;int m, n, t=0, r=-1;cin >> m;cin >> s;while (t < s.length())//一次读入字符到二维数组 {r++;for (int j=0; j<m; j++)A[r][j] = s[t++];if (t < s.length()){r++;for (int j=m-1; j>=0; j--)A[r][j] = s[t++];}}n = s.length() / m; //行数 for (int j=0; j<m; j++)//从上到下逐行输出字符 {for (int i=0; i<n; i++){cout << A[i][j];}}cout << endl;return 0;}
阅读全文
0 0
- 20_反反复复
- 20:反反复复
- 反反复复
- 反反复复
- 反反复复
- 反反复复
- 百练noi 20:反反复复
- 反反复复反反复复反反复复
- 反反复复反反复复反反复复
- 发发反反复复反反复复反反复复反反复复h
- 反反复复反反复复飞
- 孙菲菲反反复复反反复复
- 对方反反复复反反复复吩咐
- 的反反复复福福福福福福福福福发反反复复
- 防守对方发生的反反复复反反复复反反复复反反复复反反复复反
- POJ2039:反反复复
- 反复发反反复复反反复复奉化
- 发反反复复反反复复反复的
- 详解MindManager之提醒功能
- 秒杀系统架构优化思路
- eclipse中Pull代码报错checkout conflict with files的解决方法
- 如何使用rem
- 记录一次大对象导致的Java堆内存溢出问题
- 20_反反复复
- 博客宣言
- Mysql命令行备份与还原数据库操作实例
- Aop小引
- 轻松搞定面试中的二叉树题目
- Android 自定义View步骤
- [PAT]1012. The Best Rank (25)@Java
- android的一个下载框架Aria
- 提升读书效率?务必注意这几点!