题目描述
看数据小嫌麻烦直接就这样写了。
也算递归吧,一层一层用string的性质加上去。
C++ 代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,ll> P;
const int maxn=5e5+10;
const int mod=1000000000+7;
const double eps=1e-6;
int main() {
int n;
while(cin>>n&&n!=-1) {
string s[30][400];
s[1][1]="X";
string space=" ";
int m=1;
for(int i=2;i<=n;i++) {
for(int j=1;j<=3*m;j++) {
if(j<=m) {
s[i][j]=s[i-1][j]+space+s[i-1][j];
} else if(j>m&&j<=2*m) s[i][j]=space+s[i-1][j-m]+space;
else {
s[i][j]=s[i-1][j-2*m]+space+s[i-1][j-2*m];
}
}
m*=3;
space=space+space+space;
}
for(int i=1;i<=m;i++) {
cout<<s[n][i]<<endl;
}
cout<<"-\n";
}
return 0;
}