若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

2898: C-Z型变换

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,345

题目描述

让我们来玩个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;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Dreams孤独患者 Skip 原站点
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist