luogu1538:迎春舞会之数字之舞

题目连接:该题是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;
}

猜你喜欢

转载自blog.csdn.net/liusu201601/article/details/88657234