You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
#include <bits/stdc++.h>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
const int N = 210; //2*n+10
|
|
|
|
|
char a[N];
|
|
|
|
|
|
|
|
|
|
int n;
|
|
|
|
|
|
|
|
|
|
//输出当前行
|
|
|
|
|
void print() {
|
|
|
|
|
for (int i = 1; i <= 2 * n + 2; i++) cout << a[i];
|
|
|
|
|
cout << endl;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//递归函数
|
|
|
|
|
void dfs(int x) {
|
|
|
|
|
//输出当前行
|
|
|
|
|
print();
|
|
|
|
|
|
|
|
|
|
//大于4时,可以进行递归
|
|
|
|
|
if (x > 4) {
|
|
|
|
|
swap(a[x], a[2 * x + 1]), swap(a[x + 1], a[2 * x + 2]); // 中间的o*与最后--交换
|
|
|
|
|
//输出
|
|
|
|
|
print();
|
|
|
|
|
|
|
|
|
|
swap(a[x], a[2 * x - 1]), swap(a[x + 1], a[2 * x]); //将最右边的**与--位置交换
|
|
|
|
|
|
|
|
|
|
//数值-1,进行递归
|
|
|
|
|
dfs(x - 1);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//等于4时,是一个固定的路线
|
|
|
|
|
swap(a[4], a[9]), swap(a[5], a[10]);
|
|
|
|
|
print();
|
|
|
|
|
|
|
|
|
|
swap(a[4], a[8]), swap(a[5], a[9]);
|
|
|
|
|
print();
|
|
|
|
|
|
|
|
|
|
swap(a[2], a[8]), swap(a[3], a[9]);
|
|
|
|
|
print();
|
|
|
|
|
|
|
|
|
|
swap(a[2], a[7]), swap(a[3], a[8]);
|
|
|
|
|
print();
|
|
|
|
|
|
|
|
|
|
swap(a[1], a[7]), swap(a[2], a[8]);
|
|
|
|
|
print();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
cin >> n;
|
|
|
|
|
|
|
|
|
|
//初始化棋盘
|
|
|
|
|
for (int i = 1; i <= n; i++) a[i] = 'o'; //前n个是o
|
|
|
|
|
for (int i = 1; i <= n; i++) a[n + i] = '*'; //中间n个是*
|
|
|
|
|
for (int i = 1; i <= 2; i++) a[2 * n + i] = '-'; //最后两个是-
|
|
|
|
|
|
|
|
|
|
//递归
|
|
|
|
|
dfs(n);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|