看了第一眼 没看题目描述 以为是栅栏密码 写了个栅栏密码解密的脚本发现不对 是从左到右 再从右到左循环 写完后居然报wrong answer 发现数组大小搞错了...
#include <stdio.h>
#include <string.h>
#define MAX 1000
int main()
{
int n,m,p,k,x,y;
char a[MAX],b[MAX][30];
while (1)
{
scanf("%d%*c",&p);
if (p==0)
break;
scanf("%s",a);
for (n=0,m=strlen(a),x=0,y=0;n<m;n++)
{
b[x][y]=a[n];
if (x%2==0)
{
y++;
if (y==p)
{
x+=1;
y=p-1;
}
}
else
{
y--;
if (y==-1)
{
x+=1;
y=0;
}
}
}
if ((y==0 && x%2==0) || (y==p-1 && x%2==1))
x-=1;
for (n=0;n<p;n++)
{
for (m=0;m<=x;m++)
printf("%c",b[m][n]);
}
printf("\n");
}
return 0;
}