采用递归算法。
递归思路:n度的宇宙是一个大问题,n-1度的宇宙是一个小问题,n度的大宇宙由五个n-1度的小宇宙组成,这些小宇宙分别在大宇宙的四个角落和中心,终止条件是1度的时候,这时候只有一个'X'的存在,即不可拆分的最小宇宙。(这里采用矩阵来存储各个宇宙)
代码如下:
#include
#include
using namespace std;
#define SIZE 2001
#define base 3
#define multiple 2
char p[SIZE][SIZE];
void universe(int n, int x, int y)
{
if (n == 1) p[x][y] = 'X';
else
{
int size = pow(base, n - multiple);
universe(n - 1, x, y);
universe(n - 1, x, y + size * multiple);
universe(n - 1, x + size, y + size);
universe(n - 1, x + size * multiple, y);
universe(n - 1, x + size * multiple, y + size * multiple);
}
}
int main()
{
int n = 0;
while(cin >> n)
{
int size = pow(base, n - 1);
for(int i = 1; i <= size; ++i)
{
for (int j = 1; j <= size; ++j) p[i][j] = ' ';
}
universe(n, 1, 1);
for(int i = 1; i <= size; ++i)
{
for (int j = 1; j <= size; ++j) cout << p[i][j];
cout << endl;
}
cout << "-" << endl;
}
}



