题目描述
让我们来玩个Z型变换的游戏,游戏的规则如下:
给你一个字符串,将它以Z字型的形状不断伸展开,
如给定字符串为"abcdefghijklmnopqrstuvwxyz",
假设Z字形的宽度为4,那么我们展开为
a g m s y
b f h l n r t x z
c e i k o q u w
d j p v
现在我们一行一行读出字母,空格均省略,则得到:
agmsybfhlnrtxzceikoquwdjpv
明白了吗?
那么问题来了:已知给定的字符串和Z字形的宽度,求展开后按行读取的字符串是什么。
输入
多组数据输入,直到文件末。每行包含一个字符串s代表需要展开的字符串,一个正整数t,代表Z字形的宽度
字符串中只包含英文字母,长度<=100。
输出
每组数据输出展开后按行读取组成的字符串。
样例输入
PAYPALISHIRING 3
样例输出
PAHNAPLSIIGYIR
参考代码
#include<stdio.h>
#include<string.h>
int main()
{
char a[200];
int t;
while(scanf("%s %d",&a,&t)!=EOF)
{
int x=strlen(a);
int k=t-1;
int i,j;
if(t==1)
printf("%s",a); else
{
for (i=0;i<t;i++)
{
int s=k-i;
if(s==0)
s=k;
printf("%c",a[i]);
int j=i;
while(j+2*s<x)
{
printf("%c",a[j+2*s]);
j=j+2*s;
if(s!=k)
{
s=k-s;
}
}
}
}
printf("n");
}
return 0;
}
解析
暂无