比赛 位运算及及其应用题单 评测结果 AAAAAAAAAA
题目名称 海明码 最终得分 100
用户昵称 dy 运行时间 0.030 s
代码语言 C++ 内存使用 3.29 MiB
提交时间 2025-01-25 15:02:12
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

int n,b,d;
int ans[114514];
int cnt=1,i=1;
bool f;

int find(int x,int y)
{
    int u=x^y,res=0;
    while(u)
    {
        if(u&1)res++;
        u>>=1;
    }
    return res;
}
int main()
{
    freopen("hamming.in","r",stdin);
    freopen("hamming.out","w",stdout);
    cin>>n>>b>>d;
    while(cnt<n)
    {
        f=1;
        for(int j = cnt ; j >= 1 ; j -- )
        {
            if(find(ans[j],i)<d)
            {
                f=0;
                break;
            }
        }
        if(f)
        {
            ans[++cnt]=i;
        }
        i++;
    }
    for(int i = 1 ; i <= cnt ; i ++ )
    {
        cout<<ans[i]<<" ";
        if(i%10==0)cout<<"\n";
    }
	return 0;
}