
Donov Gilbert laba
By: a guest on
Apr 26th, 2012 | syntax:
C++ | size: 1.34 KB | hits: 19 | expires: Never
#include <iostream>
#define _height 4000
#define _width 4000
using namespace std;
static const int maxX = _height, maxY = _width;
int maxx=0, maxy=0,_time=0;
int x=0, y=0;
char a[_height][_width];
int per(int type)
{
switch (type)
{
case 0: a[++x][y] = '|';
++x; break;
case 1: a[x][++y] = '-';
++y; break;
case 2: a[--x][y] = '|';
--x; break;
case 3: a[x][--y] = '-';
--y; break;
}
}
int go(int t, int k, int n)
{
if (n == 0)
{ if (x<maxX && y<maxY)
{
a[x][y] = '*';
if (x > maxx) maxx = x;
if (y > maxy) maxy = y;
}
return 1;
}
if (t>0)
{
if (k==0) return (go(-t,1,n-1) + per(2) + go(t,0,n-1) + per(3) + go(t,0,n-1) + per(0) + go(-t,3,n-1));
if (k==2) return (go(-t,3,n-1) + per(0) + go(t,2,n-1) + per(1) + go(t,2,n-1) + per(2) + go(-t,1,n-1));
} else
{
if (k==1) return (go(-t,0,n-1) + per(3) + go(t,1,n-1) + per(2) + go(t,1,n-1) + per(1) + go(-t,2,n-1));
if (k==3) return (go(-t,2,n-1) + per(1) + go(t,3,n-1) + per(0) + go(t,3,n-1) + per(3) + go(-t,0,n-1));
}
}
int main()
{
int n;
cin >> n;
for (int i=0;i<_height; i++)
for (int j=0;j<_width;j++)
a[i][j]=' ';
go(1,2,n);
for (int i = maxx; i>=0; i--)
{
for (int j = 0 ; j<=maxy; j++)
cout << a[i][j];
cout<<endl;
}
system("pause");
return 0;
}