不是VIP会员,不能显示答案

题目解答

题目:
(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为:数字0变成矩阵$$\begin{bmatrix}0 & 0 \\0 & 1 \end{bmatrix}$$,数字1变成矩阵$$\begin{bmatrix}1 & 1 \\1 & 0 \end{bmatrix}$$ 。最初该矩阵只有一个元素0,变幻n次后,矩阵会变成什么样?

例如,矩阵最初为:[0];矩阵变幻1次后:$$\begin{bmatrix}1 & 1 \\1 & 0 \end{bmatrix}$$

矩阵变幻2次后:

$$\begin{bmatrix}0 & 0 & 0 & 0 \\1 & 0 &1 & 0 \\ 0 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \end{bmatrix}$$



输入一行一个不超过10的正整数n。输出变幻n次后的矩阵。 试补全程序。



提示:



"<<"表示二进制左移运算符,例如$(11)_2 << 2 = (1100)_2$;

而“^”表示二进制异或运算符,它将两个参与运算的数中的每个对应的二进制位—进行比较,若两个二进制位相同,则运算结果的对应二进制位为0,反之为1。

#include <cstdio>

using namespace std;

int n;

const int max_size = 1 << 10;



int res[max_size][max_size];



void recursive(int x, int y, int n, int t) {

if (n == 0) {

res[x][y] = ①;

return;

}

int step = 1 << (n - 1);

recursive(②, n - 1, t);

recursive(x, y + step, n - 1, t);

recursive(x + step, y, n - 1, t);

recursive(③, n - 1, !t);

}



int main() {

scanf("%d", &n);

recursive(0, 0, ④);

int size = ⑤;

for (int i = 0; i < size; i++) {

for (int j = 0; j < size; j++)

printf("%d", res[i][j]);

puts("");

}

return 0;

}


选择题

1) ①处应填()

2) ②处应填()

3) ③处应填()

4) ④处应填()

5) ⑤处应填()
考点:
分析:
解答:
评论:
老师: