题目
题目:n维超立方体是在n维空间中对三维空间立方体的类比,下图便是一个4维超立方体在三维空间中的投影及该立方体在三维空间的展开图
给超立方体的各顶点编号后,就可以按照一定规则写出其邻接矩阵。请同学们根据下图寻找规律,对于给定的顶点编号序列,写出对应的超立方体的邻接矩阵。
输入:
维数n,顶点的编号序列a(0<=n<=7)
输出:
对应的超立方体的邻接矩阵(顶点顺序需与a一致)
代码
#include<stdio.h>
#include<math.h>
#include<string.h>
#define reversebit(x,y) x^=(1<<y)
int n;
int num;
int a[10000]; //记录输出顺序
int ex[10000]; //记录每行输出
int k;
int main()
{
int i,j;
scanf("%d",&n);
num=pow(2,n);
for(i=0;i<num;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<num;i++)
{
memset(ex, 0, sizeof(ex));
k=a[i];
for(j=0;j<n;j++)
{
int f=k;
ex[reversebit(f,j)]=1;
}
printf("%d",ex[a[0]]);
for(j=1;j<num;j++)
{
printf(" %d",ex[a[j]]);
}
printf("\n");
}
}