计算C ++中K位不同的数组的所有对
在本教程中,我们将讨论一个程序,以查找K位不同的数组对的数量。
为此,我们将提供一个数组和一个整数K。我们的任务是查找在二进制表示形式中相差K位的对数。
示例
#include <bits/stdc++.h>
using namespace std;
//的位数
//二进制表示
int count_bit(int n){
int count = 0;
while (n) {
if (n & 1)
++count;
n >>= 1;
}
return count;
}
//计算对数
long long count_pair(int arr[], int n, int k) {
long long ans = 0;
for (int i = 0; i < n-1; ++i) {
for (int j = i + 1; j < n; ++j) {
int xoredNum = arr[i] ^ arr[j];
if (k == count_bit(xoredNum))
++ans;
}
}
return ans;
}
int main() {
int k = 2;
int arr[] = {2, 4, 1, 3, 1};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Total pairs for k = " << k << " are " << count_pair(arr, n, k) << "\n";
return 0;
}输出结果
5
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短