历届蓝桥杯试题 打印十字图

题意

找规律,打印十子图的层数。

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..

..$$$$$$$$$$$$$..

(上面图如果对齐不标准,可以拷到记事本中查看,找规律)

当n=4的时候,图形如下图所示

 

Input

1

 

Sample Output

..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..

code

写的简单粗暴了点,在f ()里是中心的十子图,func ()函数里是外围的边框,这方法如果不仔细非常容易出错,还是尽量不要用。在想个新的行之有效的办法。。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int n;
int len[30];
char maze[130][130];

void f()
{
	int t;
	t=len[n]/2;
	maze[t][t]='$';
	maze[t-1][t]='$';
	maze[t-2][t]='$';
	maze[t][t-1]='$';
	maze[t][t-2]='$';
	maze[t+1][t]='$';
	maze[t+2][t]='$';
	maze[t][t+1]='$';
	maze[t][t+2]='$';
}

void print(int k)
{
	for(int i=0;i<len[k];i++)
	{
		printf("%s\n",maze[i]);
	}
}

void func(int k,int l)
{
	for(int i=l;i<len[k]+l;i++)
	{
		for(int j=l;j<len[k]+l;j++)
		{
			if(i==l || i==len[k]+l-1)
			{
				if(j==l || j==l+1 || j==len[k]+l-1 || j==len[k]+l-2)
				continue;
				else
				maze[i][j]='$';
			}
			else if(j==l || j==len[k]+l-1)
			{
				if(i==l || i==l+1 || i==len[k]+l-1 || i==len[k]+l-2)
				continue;
				else
				maze[i][j]='$';
			}
		}
	}
	
	maze[l+1][l+2]='$';
	maze[l+2][l+1]='$';
	maze[l+2][l+2]='$';
	
	maze[l+1][len[k]+l-3]='$';
	maze[l+2][len[k]+l-2]='$';
	maze[l+2][len[k]+l-3]='$';
	
	maze[len[k]+l-3][l+1]='$';
	maze[len[k]+l-2][l+2]='$';
	maze[len[k]+l-3][l+2]='$';
	
	maze[len[k]+l-3][len[k]+l-3]='$';
	maze[len[k]+l-3][len[k]+l-2]='$';
	maze[len[k]+l-2][len[k]+l-3]='$';
	
}

int main()
{
	len[0]=5;
	for(int i=1;i<30;i++)
	len[i]=len[i-1]+4;
	
	scanf("%d",&n);
	for(int i=0;i<len[n];i++)
		for(int j=0;j<len[n];j++)
			maze[i][j]='.';
	
	int l=0;
	for(int t=n;t>0;t--)
	{ 
		func(t,l);
		l+=2;
	}
	f();
	print(n);
	
	return 0;
}

今天看了枪版的流浪地球,感觉那段点燃木星对我感触较深,希望,像钻石一样珍贵的东西,愿我们都心存希望,愿你将有梦可做。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值