题目连接:该题是luogu试炼场的2-3:T1
有一道类似的,难度要高一点的:luogu1498:南蛮图腾
题目大意:
1 给出一个数字n,第二行有若干是数字;
2 要求按照 n 的尺寸来放大这若干个数字;
样例1:尺寸为1的数字打印:
样例2:尺寸为2的数字打印:
解题思路:
1 打表存储每个数字的基础笔画
2 根据比例,多次输出对应的基础笔画,注意换行的关系
上代码
//luogu1012:拼数
//字符的拼接与排序问题
#include<cstdio>
#include<cstring>
char m[20][20]={" - | | | | - "," | | ",
" - | - | - "," - | - | - ",
" | | - | "," - | - | - ",
" - | - | | - "," - | | ",
" - | | - | | - "," - | | - | - "};
int n;
char s[300];
int main()
{
scanf("%d",&n);
scanf("%s",s);int ls=strlen(s);
for(int i=0;i<ls;i++)
{
s[i]-='0';
}
for(int t=1;t<=3+n*2;t++)
{
int k,l,p;//(对原字符而言)当前打印的是 k行,l位置
if(t==1||t==2+n||t==3+n*2)
{
if(t==1) k=1; if(t==n+2) k=3; if(t==3+n*2) k=5;
for(int i=0;i<ls;i++)
{
l=k*3-3;
for(int j=1;j<=n+2;j++)
{
if(j==1) p=l;
else if(j==n+2) p=l+2;
else p=l+1;
printf("%c",m[s[i]][p]);
}printf(" ");
}
}
else
{
if(t>2+n) k=4; else k=2;
for(int i=0;i<ls;i++)
{
l=k*3-3;
for(int j=1;j<=n+2;j++)
{
if(j==1) p=l;
else if(j==n+2) p=l+2;
else p=l+1;
printf("%c",m[s[i]][p]);
}printf(" ");
}
}
printf("\n");
}
return 0;
}