0
点赞
收藏
分享

微信扫一扫

循环赛(分治法)

夏木之下 2022-03-20 阅读 30
算法
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
int n;
 
int a[1100][1100];
int main()
{
    scanf("%d",&n);
    n=pow(2,n);
    int h=1;
    a[0][0]=1;
    do{
       //以i j为基 h 为增量
        for(int i=0;i<h;i++){
            for(int j=0;j<h;j++){
                a[i][j+h]=a[i][j]+h;//右上角   a[i][j] 为左上角
                a[i+h][j]=a[i][j+h];//左下角和右上角一样
                a[i+h][j+h]=a[i][j];//右下和左上一样
            }
        }
        h=h*2;
    }while(h<n);
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
举报

相关推荐

0 条评论