题意
找规律,打印十子图的层数。
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
(上面图如果对齐不标准,可以拷到记事本中查看,找规律)
当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;
}
今天看了枪版的流浪地球,感觉那段点燃木星对我感触较深,希望,像钻石一样珍贵的东西,愿我们都心存希望,愿你将有梦可做。