题目大意:有一个字符串,原串是从左到右,从上往下,写成了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;
}