该怎么输出,第一行随着输入的不同起始位置也在改变,可以将空白的部分也看成和三角类似的字符串吗,毕竟他们的面积有倍数关系;哦,不能直接cout单独一个三角,因为随着输入不同,每行也都不相同,所以应该用二维数组
没想道遇到的最大的问题是转义序列"/__\“这样就会报错,解决办法就是改成”/__\\"
而这题我的第一想法是一边计算一边输出,看了题解的分治方法是先存储在一个很大的数组里,经计算修改数组里的值,最后“倒序”输出。
这题要想直接模拟很难,因为会找错规律,图腾是“复制”过来的
而不管是杨辉三角还是分治的思想,解题方法感觉都很。
杨辉三角:所有的数%2,于是递推公式可以变化成a[j]^=a[j-1];(已经降维了)
第一步,前置空格;第二步,更改这一行数值;第三步,判断奇数行还是偶数行,根据0还是1分别输出
分治:
每次图腾都是由上一次图腾“复制”过来,所以将图腾倒置存于数组里,根据输入的n决定复制几次,最后输出
1.初始化2.复制(向右和向下)3.输出
//第一版直接模拟错误代码
char p[4][10]={
" /\\ ",
" /__\\ ",
" /\\ /\\ ",
"/__\\/__\\"
};
string s[4]={
" /\\ ",
" /__\\ ",
" /\\ /\\ ",
"/__\\/__\\"
};
int main() {
int n;
cin>>n;
for(int i=0;i<1<<(n-2);i++) {
for(int j=0;j<4;j++) {
for(