HDU - 1200 To and Fro(水)

来源:互联网 发布:java 自定义构造函数 编辑:程序博客网 时间:2024/06/06 19:42

题目大意:有一个字符串,原串是从左到右,从上往下,写成了m列,k行
现在给你这个字符串,从第一行开始,奇数行从左往右,偶数行从右往左的出现顺序,然后要求你还原这个字符串

解题思路:找到规律,直接解决

#include <cstdio>#include <cstring>const int N = 210;char str[N];int n;void solve() {    int len = strlen(str);    int row = len / n;    //flag == 1表示奇数行,start表示的是都到第几列了, interval表示间隔    int t = len, flag = 1, start = 0, interval = 1;    int pos = start;    if (row == 1) {        printf("%s\n", str);        return ;    }    while (t--) {        printf("%c", str[pos]);        if (flag) pos += 2 * n - 1;         else pos += interval;        if (pos >= len) {            pos = ++start;            flag = 1;            n--;            interval += 2;        }        else flag ^= 1;    }    printf("\n");}int main() {    while (scanf("%d", &n) != EOF && n) {        scanf("%s", str);        solve();    }    return 0;}
0 0
原创粉丝点击