题目描述
输入
输出
样例输入
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>
using namespace std;
int n,a[1050][1050],yi=1;
void tian()
{
int c=1,jih=2,ci=0,jil=1;
while(c<n)
{
for(int i=0;i<c;i++)
{
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(" ");
}
}
我写的暴力枚举法,没打找规律
就这题耗了半个小时才写完