标解洛谷P 1498(c++解法)南蛮トゥーテン

5631 ワード

分治の問題を出して解いた.2 D文字配列で結果を格納し、初期化はすべてスペースで、変更する変数を変更すればよい.構想:一番左端にdist個のスペースがあり、サイズはsizeで、一番下の行が配列の中でheight行の三角形を印刷するとき、sizeが1であれば、直接保存します.そうでない場合は、上部、左下、右下の3つの小さな三角形を印刷します.具体的な座標はコードを参照してください.""はC++のエスケープ文字であるため、char x=(char)92を用いて文字変数xを""に割り当てることができる.
コードが来た
#include
using namespace std;
int n,a[1030]={1};
int main(){
    cin>>n;
    for(int i=0;i<1<<n;++i){
        for(int j=1;j<(1<<n)-i;++j)cout<<" ";
        for(int j=i;j>=0;--j)a[j]^=a[j-1];
        if(!(i%2))for(int j=0;j<=i;++j)cout<<(a[j]?"/\\":"  ");
        else for(int j=0;j<=i;j+=2)cout<<(a[j]?"/__\\":"    ");
        cout<<endl;
    }
    return 0;
}