【题目描述】
有一个奇幻的矩阵,在不停的变幻,其变幻方式为:
数字 1 变成矩阵:
1 1
1 2
数字 2 变成矩阵:
2 2
2 1
最初该矩阵只有一个元素 1,变幻 n 次后,矩阵会变成什么样?
例如,矩阵最初为:[1];
矩阵变幻 1 次后:
1 1
1 2
矩阵变幻 2 次后:
1 1 1 1
1 2 1 2
1 1 2 2
1 2 2 1
【输入】
一行一个整数 n(1<=n<=10),表示矩阵变幻的次数
【输出】
输出若干行,每行若干个整数,整数间以空格分开,表示变幻 n 次后的矩阵
【样例输入】
3
【样例输出】
1 1 1 1 1 1 1 1
1 2 1 2 1 2 1 2
1 1 2 2 1 1 2 2
1 2 2 1 1 2 2 1
1 1 1 1 2 2 2 2
1 2 1 2 2 1 2 1
1 1 2 2 2 2 1 1
1 2 2 1 2 1 1 2
想自己尝试,但做不出来
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int a[10][10],b[10][10];
int main(){
cin>>n;
a[1][1]=1;
for(int i=1;i<=n;i++){
int len=1<<i;
for(int j=1;j<=len;j++){
for(int k=1;k<=len;k++){
b[j][k]=a[(j+1)/2][(k+1)/2];
if(j%2==0) b[j][k]+=2;
if(k%2==0) b[j][k]+=1;
}
}
for(int j=1;j<=len;j++)
for(int k=1;k<=len;k++)
a[j][k]=b[j][k];
}
for(int i=1;i<=1<<n;i++){
for(int j=1;j<=1<<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
int n;
void change(int x, int y, int k) {
if(k == 1) {
cout << 1 << " ";
return;
}
int len = 1 << (k - 1);
change(x, y, k - 1);
change(x, y + len, k - 1);
change(x + len, y, k - 1);
change(x + len, y + len, k - 1);
}
int main() {
cin >> n;
change(0, 0, n);
return 0;
}