3
1 2 3 4 5 6 7 8
2 1 4 3 6 5 8 7
3 4 1 2 7 8 5 6
4 3 2 1 8 7 6 5
5 6 7 8 1 2 3 4
6 5 8 7 2 1 4 3
7 8 5 6 3 4 1 2
8 7 6 5 4 3 2 1
#include<bits/stdc++.h>c++
using namespace std;spa
int n,a[1050][1050],yi=1;ci
void tian()it
{class
int c=1,jih=2,ci=0,jil=1;循環
while(c<n)di
{比賽
for(int i=0;i<c;i++)while
{co
ci=0;jil=1;
while(jil<=n)
{
if(ci==0)
{
for(int j=0;j<c;j++)
{
a[i+jih][j+jil]=a[i+jih-c][j+jil+c];
}
jil+=c;
ci=1;
}
else
{
for(int j=0;j<c;j++)
{
a[i+jih][j+jil]=a[i+jih-c][j+jil-c];
}
jil+=c;ci=0;
}
}
}
jih+=c;c*=2;
}
}
int main()
{
cin>>n;
n=(1<<n);
for(int i=1;i<=n;i++)
{
a[1][i]=i;
}
tian();
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<<setw(3)<<a[i][j];
}
printf("\n");
}
}
我寫的暴力枚舉法,沒打找規律
就這題耗了半個小時才寫完