题目描述:
有3^n个-,每次将中间1/3变成空格,最后输出。
大致思路:
很简单的递归……或者直接可以发现sn=sn-1+空格+sn-1
代码:
#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
const int maxn = 13;
int s[maxn];
string ans[maxn];
int main() {
//freopen("a.out","w",stdout);
s[0] = 1;
for (int i = 1; i <= 12; i++)
s[i] = s[i-1]*3;
ans[0] = "-";
ans[1] = "- -";
for (int i = 2; i <= 12; i++) {
ans[i] = ans[i-1];
for (int j = 0; j < s[i-1]; j++) {
ans[i] += " ";
}
ans[i] += ans[i-1];
}
int n;
cin>>n;
cout<<ans[n]<<endl;
while (cin>>n) {
cout<<ans[n]<<endl;
}
/*for (int i = 0; i < 13; i++) {
cout<<i<<ans[i]<<endl;
}*/
}