洛谷P1498 南蛮图腾

该怎么输出,第一行随着输入的不同起始位置也在改变,可以将空白的部分也看成和三角类似的字符串吗,毕竟他们的面积有倍数关系;哦,不能直接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(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值