PAT 1. HBCPC—7-2 二维格雷码
原题链接
简单
作者:
爱听半岛铁盒
,
2023-05-30 10:49:01
,
所有人可见
,
阅读 232
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
const int N=550;
int a[N][N];
int n,num,count1,count2;
int main()
{
cin>>n;
num=pow(2,n); //num为2^n
count1=1,count2=1;
for(int i=1;i<num;i++) //初始化第一行
{
a[0][i]=a[0][i-count1]+count2;
count1+=2;
if(count1>(i+1))
{
count1=1;
count2*=2;
}
}
for(int i=1;i<num;i++) //初始化第一列
{
a[i][0]=a[0][i]*num;
}
for(int i=0;i<num;i++) //每个a[i][j]=a[i][0]+a[0][j]
{
for(int j=0;j<num;j++)
{
a[i][j]=a[i][0]+a[0][j];
}
}
for(int i=0;i<num;i++) //格式化输出
{
for(int j=0;j<num;j++)
{
printf("%d",a[i][j]);
if(j!=num-1) printf(" ");
}
if(i!=num-1) printf("\n");
}
return 0;
}