[TIOJ]1994. 冰塊線
由4*4的解答,可以發現解出左上U的排序,及可復制其他三格
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2049;
int a[MAXN][MAXN];
void div(int n,bool type) {
if(n==0) return;
int add=n>>1;
int addadd=add*add;
div(add,!type);
if(type==0) {
for(int i=0;i<add;++i)
for(int j=0;j<add;++j) {
a[j][i+add]=a[i][j]+addadd;
a[j+add][i+add]=a[i][j]+(addadd<<1);
a[n-i-1][add-j-1]=a[i][j]+addadd*3;
}
}
else if(type==1) {
for(int i=0;i<add;++i)
for(int j=0;j<add;++j) {
a[j+add][i]=a[i][j]+addadd;
a[j+add][i+add]=a[i][j]+(addadd<<1);
a[add-i-1][n-j-1]=a[i][j]+addadd*3;
}
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
a[0][0]=0;
int n;
cin>>n;
n=(1<<(n));
div(n,bool(0));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) {
cout<<a[j][i]<<" \n"[j==n-1];
}
}
留言
張貼留言