题目大意:
Mo和Larry设计一种加密信息的方法。他们首先秘密决定列数并且竖着写信息,填充额外的随机字母,形成一个长方形的字母序列。
Mo发消息给Larry,从左到右,在从右到左。你的工作是还原信息
解题思路:
按照上面的方法逆着解码就行了
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int n,i,j,l;
char s[5000],str[100][200];
while(scanf("%d",&n)&&n)
{
scanf("%s",s);
l=strlen(s);
for(i=0;i<(l/n);i++)
{
for(j=0;j<n;j++)
{
if(i%2==0)
{
str[i][j]=s[i*n+j];
}
else if(i%2==1)
{
str[i][j]=s[i*n+n-1-j];
}
}
}
for(j=0;j<n;j++)
{
for(i=0;i<(l/n);i++)
{
printf("%c",str[i][j]);
}
}
printf("\n");
}
return 0;
}
439

被折叠的 条评论
为什么被折叠?



