循环四个方向复制当前图形
用函数解决非常简便
最后符号换行很有乐趣
公式不好算出来可以暴力搜索啊
哈哈哈哈
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 1e4 + 10;
char pic[MAXN][MAXN];
void init(int x, int y, int len)
{
for(int i = 0; i < len; i++)
{
for(int j = 0; j < len; j++)
{
pic[x + i][y + j] = pic[i][j];
}
}
}
void setendl(int w)
{
for(int i = 0; i < w; i++)
{
for(int j = w; ; j--)
{
if(pic[i][j] == '*')
{
//cout<<i<<j<<endl;
pic[i][j] = '&';
goto l1;
}
}
l1:
continue;
}
}
int main()
{
memset(pic, ' ', sizeof(pic));
int N;
cin>>N;
pic[0][0] = '*';
int w = 1;
for(int l = 1; l < N; l++, w *= 3)
{
init(0, w * 2, w);
init(w, w, w);
init(2 * w, 0, w);
init(2 * w, 2 * w, w);
}
setendl(w);
for(int i = 0; i < w; i++)
{
for(int j = 0; j < w; j++)
{
if(pic[i][j] == '&')
{
cout<<'*'<<endl;
goto l2;
}
else
cout<<pic[i][j];
}
l2:
continue;
}
return 0;
}