求助:矩阵变幻
  • 板块学术版
  • 楼主Chalage_2010
  • 当前回复8
  • 已保存回复8
  • 发布时间2023/1/5 16:56
  • 上次更新2023/10/24 05:29:24
查看原帖
求助:矩阵变幻
760690
Chalage_2010楼主2023/1/5 16:56
【题目描述】

有一个奇幻的矩阵,在不停的变幻,其变幻方式为:
数字 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;
}

蒟蒻求助

2023/1/5 16:56
加载中...