牛客10:H.War of Inazuma (Easy Version)
题面:有一个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]; }