zoukankan      html  css  js  c++  java
  • SOJ 1007. To and Fro

    题目大意:还原(解码)字符串。该字符串str首先被平均分成n列,每列r行,其中n * r  ≤ len(str) ,多余位置用'x'添补。字符串按列填充,然后将偶数列翻转,然后按行获得输入串。

    解题思路:逆向思维。先将输入串按行填充 r * n的矩阵,然后偶数列翻转,最后按列输出输出串。

    代码如下:

     1 #include <iostream>
     2 #include <cstring>
     3 using namespace std;
     4 
     5 const int ROWS = 105;
     6 const int COLS = 25;
     7 
     8 char m[ROWS][COLS];
     9 char str[ROWS * 2];
    10 char ans[ROWS * 2];
    11 int n;
    12 
    13 int main() {
    14     while (cin >> n, n) {
    15         cin >> str;
    16         int len = strlen(str);
    17 
    18         int r = (len + n - 1) / n;
    19 
    20         for (int i = 0; i < r; i++) {
    21             for (int j = 0; j < n; j++) {
    22                 m[i][j] = str[i*n + j];
    23             }
    24         }
    25 
    26         for (int i = 1; i < r; i += 2) {
    27             for (int j = 0; j * 2 < n; j++) {
    28                 char temp = m[i][j];
    29                 m[i][j] = m[i][n - j - 1];
    30                 m[i][n - j - 1] = temp;
    31             }
    32         }
    33 
    34         int k = 0;
    35         for (int i = 0; i < n; i++) {
    36             for (int j = 0; j < r; j++) {
    37                 ans[k++] = m[j][i];
    38             }
    39         }
    40         ans[k++] = '';
    41 
    42         cout << ans << endl;
    43     }
    44     return 0;
    45 }
  • 相关阅读:
    医疗设备软件的安全性问答
    python使用技巧
    C++对象模型
    面向对象方法综述
    如何设计可扩展性系统架构
    敏捷过程
    python中import的相关知识总结
    软件架构的关键原则
    读后感——程序员的思维修炼
    LINUX系统备份工具
  • 原文地址:https://www.cnblogs.com/mchcylh/p/4849060.html
Copyright © 2011-2022 走看看