题解 | #c

墨提斯的排列

https://ac.nowcoder.com/acm/contest/120564/C

题目

alt

输入

alt

输出

alt

思路

要使相邻两项的异或值相加最小,就要相邻的数二进制尽可能相近,同时也要满足排列的性质。

0000

0001

0010

0011

在满足排列性质的前提下,发现只有两个数二进制异或完只剩下一个1的排序最小。

也就是答案构成格雷码。

格雷码第i项就是i^(i>>1)。

完整代码

```#include<bits/stdc++.h>

using namespace std;
int main(){
    int n;
    cin>>n;
    for(int i=0;i< 1<<n;i++){
        cout<<(i ^ (i>>1))<<" ";
    }
   
}
全部评论

相关推荐

01-30 16:13
浙江大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务