汉明距离 I 题解
2025-08-18 11:27:43
发布于:广东
23阅读
0回复
0点赞
这里使用穷举法,时间复杂度较大。
#include <iostream>
using namespace std;
int n[501];
int k[501];
int d(int a,int b){ //计算两个数之间的汉明距离
int k=a^b,s=0;
while(k>=1){
if(k%2==1) //统计这个两数按位异或后1的数量
s++;
k/=2;
}
return s;
}
int hm(int a,int b){
int s=0;
for(int i=0;i<=a;i++)
for(int j=i+1;j<=a;j++) //遍历每一种可能
if(d(i,j)<=b)
s++;
return s;
}
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
cin>>n[i]>>k[i];
cout<<hm(n[i],k[i])<<endl; //一边输入一边输出
}
return 0;
}
本人水平有限,代码难免有局限之处,望海涵。
这里空空如也
有帮助,赞一个