题面:有一个n维超平面,有2^n个点,相邻定义为二进制仅有一位不同,要求每个点相邻不超过 。
解析:先考虑n=1,此时若为01,则无相邻点;n=2,为0110,也是无相邻点。发现n维空间的构造,是n-1维空间和它各位的取反,这样每一个点都没有相邻点。(两阵营点一样多)
代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
vector<int> v;
cin>>n;
v.push_back(0);
for(int i=0;i<=n;i++)
for(int j=0;j<(1<<i);j++){
v.push_back(v[j]^1);
}
for(int i=0;i<(1<<n);i++)
cout<<v[i];
}


京公网安备 11010502036488号