您的位置:首页 > 其它

HDU - 1200 To and Fro(水)

2015-10-02 15:45 288 查看
题目大意:有一个字符串,原串是从左到右,从上往下,写成了m列,k行

现在给你这个字符串,从第一行开始,奇数行从左往右,偶数行从右往左的出现顺序,然后要求你还原这个字符串

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

#include <cstdio>
#include <cstring>
const int N = 210;

char str
;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: