【题目描述】
有一个奇幻的矩阵,在不停的变幻,其变幻方式为:
数字 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<bits/stdc++.h>
using namespace std;
int a[10001][10001];
int n;
void f(int n,int x,int y,int s){
if(n==1){
a[x][y]=s;
return ;
}
else{
int k=pow(2,n-1);
if(s==1)
{
f(n-1,x,y,1);
f(n-1,x,y+k,1);
f(n-1,x+k,y+k,2);
f(n-1,x+k,y,1);
}
else
{
f(n-1,x,y,2);
f(n-1,x,y+k,2);
f(n-1,x+k,y+k,1);
f(n-1,x+k,y,2);
}
}
}
int main(){
cin>>n;
f(n,1,1,1);
int k=pow(2,n);
for(int i=1;i<=k;i++){
for(int j=1;j<=k;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}
蒟蒻求助