神奇的杨辉三角


题目详情

            1
           1 1 
          1 0 1 
         1 1 1 1 
        1 0 0 0 1 
       1 1 0 0 1 1 
      1 0 1 0 1 0 1 
     1 1 1 1 1 1 1 1 
    1 0 0 0 0 0 0 0 1 
   1 1 0 0 0 0 0 0 1 1 
  1 0 1 0 0 0 0 0 1 0 1
 1 1 1 1 0 0 0 0 1 1 1 1
       /\
      /__\
     /\  /\
    /__\/__\
   /\      /\
  /__\    /__\
 /\  /\  /\  /\
/__\/__\/__\/__\

居然有人能把这两者联系在一起,属实是太牛了呀!!
对应关系如下:

    /\ ? 1
    两空格 ? 0
    /__\ ? 两个 1

代码如下:

#include
using namespace std;

int a[1025][1025];

inline void init()
{
	a[1][1] = 1;
	for (int i = 2; i <= 1024; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			a[i][j] = a[i - 1][j] ^ a[i - 1][j - 1];
		}
	}
}
int main()
{
	init();
	int n; cin >> n;
	int cnt = 1 << n;
	for (int i = 1; i <= cnt; i++)
	{
		for (int j = 1; j <= (cnt - i); j++) cout << " ";
		if (i & 1)
		{
			for (int j = 1; j <= i; j++) cout << (a[i][j]?"/\\":"  ");  /// \ 转义字符
		}
		else
		{
			for (int j = 1; j <= i; j += 2) cout << (a[i][j] ? "/__\\" : "    ");
		}
		cout << endl;
	}
	return 0;
}

相关