Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-完善程序 第 19 题
(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为:数字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 题 ⑤处应填()

解答部分以后会开放。