给定一堆二进制数,可以把某些数变化为其NOT形式
NOT形式对应原字符串中1,0变换
因为同一个数不能使用两次,所以我们要找到最小、 次小、 最大、 次大
比较最大-次小和次大-最小的值即可
代码如下:
#include
#include
#include
#include
#define MAXN 110
#define LL long long
#define INF 0x7fffffffffffffff
using namespace std;
int T, n, k;
LL a[5];
char str[MAXN], strtmp[MAXN];
LL Not_val(char str[]) {//用于得到当前二进制对应十进制数值
LL ans = 0ll;
LL tmp = 1ll;
for(int i=k-1; i>=0; --i) {
ans += (str[i]-'0')*tmp;
tmp <<= 1;
}
return ans;
}
void Not(char str1[], char str2[]) {//把str2的NOT形式保存在str1中
for(int i=0; i