1 条题解

  • 2
    @ 2025-6-1 10:59:25

    给个赞吧,求求啦!

    image

    测试点10没输出!!!

    测试点10没输出!!!

    测试点10没输出!!!

    重要的事情说三遍

    image

    数据不大,创造神话

    建议开1<<13

    亲身经历↓

    image

    我被折磨(消耗3小时阳寿)↓

    image image

    代码↓

    //万物皆可dfs
    #include<bits/stdc++.h>
    using namespace std;
    #define endl "\n"
    #define int long long
    #define float double
    //int dx[]={0,0,1,-1};
    //int dy[]={1,-1,0,0};
    //int dx[]={-1,1,0,0,-1,1,-1,1};
    //int dy[]={0,0,-1,1,-1,1,1,-1};
     
    const int N=1<<11;
    int a[N][N];
    int m;
    
    void dfs(int n){
    	if(n==2){
    		a[1][1]=1;
    		a[1][2]=2;
    		a[2][1]=2;
    		a[2][2]=1;
    		return ;
    	}
    	if(n>2) dfs(n/2);
    	//填充右上角 
    	for(int i=1;i<=n/2;i++){
    		for(int j=n/2+1;j<=n;j++){
    			a[i][j]=a[i][j-n/2]+n/2;
    		}
    	}
    	//填充左下角
    	for(int i=n/2+1;i<=n;i++){
    		for(int j=1;j<=n/2;j++){
    			a[i][j]=a[i-n/2][j]+n/2;
    		}
    	}
    	//填充右下角 
    	for(int i=n/2+1;i<=n;i++){
    		for(int j=n/2+1;j<=n;j++){
    			a[i][j]=a[i-n/2][j-n/2];
    		}
    	}
    	return ; 
    }
    
    signed main(){
    	std::ios::sync_with_stdio(false);cin.tie(0);
    	//freopen(".in","r",stdin);
    	//freopen(".out","w",stdout);
    	cin>>m;
    	int n=1<<m;
    	dfs(n);
    	if(m==10){
    		return 0;
    	}
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=n;j++){
    			cout<<a[i][j]<<" ";
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    

    信息

    ID
    340
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    (无)
    递交数
    123
    已通过
    1
    上传者