问题标题: 酷町堂:2566 海明距离(100悬赏)

1
1
已解决
李明翰
李明翰
新手光能
新手光能

海明距离是指,针对两个二进制码,求它们在相同的位置上数字不同的位置的个数。比如,0001和1110的海明距离就是4。现在请你找到N(1≤N≤64)个二进制形式下的数,使得在且编码为B(1≤B≤8)位的情况下任意两个数字之间的海明距离大于等于D(1≤D≤7)。


0
已采纳
被禁言 何冯成
何冯成
中级光能
中级光能
#include<iostream>
using namespace std;
int a[65],B;
string f(int n) {
    string p="0123456789ABCDEFGHIJ",s="";
    while(n!=0) {
        s=p[n%2]+s;
        n/=2;
    }
    while(s.size()<B)
    {
        s='0'+s;
    }
    return s;
}
int h(string x,string y) {
    int cnt=0;
    for(int i=0; i<B; i++) {
        if(x[i]!=y[i])
            cnt++;
    }
    return cnt;
}
int main(){
int n,d;
    cin>>n>>B>>d;
    a[1]=0;
    int t=1;
    for(int i=1; i<=255; i++) {
        bool flag=true;
        for(int j=1; j<=t; j++) {
            if(h(f(i),f(a[j]))<d) {
                flag=false;
                break;
            }
        }
        if(flag==true) {
            t++;
            a[t]=i;
        }
        if(t==n)
        break;
        flag=0;
    }
    for(int i=1;i<=n;i++)
    {
        cout<<a[i]<<' ';
        if(i%10==0)
        cout<<endl;
    }
return 0;
}
0
王子健
王子健
初级天翼
初级天翼

如果你要代码我不给你,你加我QQ,我给你

但如果你要思路,我现在就给你

你说清楚了

0
0
0
0
0
0
0
0
缪鲲鹏
缪鲲鹏
新手光能
新手光能

你没听课?(还是故意的)

我要回答