M: 异或最大值
Description
给定一些数,求这些数中两个数的异或值最大的那个值
Input
多组数据。第一行为数字个数n,1 <= n <= 10 ^ 5。接下来n行每行一个32位有符号非负整数。
Output
任意两数最大异或值
Sample Input
3
3
7
9
Sample Output
14
Hint
这一题就是建立0-1Trie树,然后采取一个贪心的做法:从高位开始,优先走与目前数每一位都相反的方向。
不过我的程序有个BUG:因为全采取贪心(其实只需要特判i=31的位置)的方式,只要在得到最大值之前出现一个负数就无法得到正确答案。
#include <bits/stdc++.h>
#define N 10100
#define INF 0x3f3f3f3f