• 美团笔试-第二题最大汉明距离:


    题目描述

      给出n个数,求这n个数中两两最大的汉明距离,两个数的汉明距离定义维两个二进制表示中不同的位数。

      例如11和6的汉明距离为3,因为11转换为二进制后为1011,6转换为二进制后为0110,他们的二进制第1,3,4位(从低位开始数)不同

    输入

      第一行一个数n,代表有n个数,接下来n个数,描述这n个数a1,a2,a3,..an;

    1<=n<=100,1<=ai<=10000

    输出

      一个数,最大的汉明距离

    #include<stdio.h>
    #define N 100
    #define M 32
    int TenToTwo(int a);
    int main(void)
    {
     int A[N][M]={0},a[N];          //A[N][M]存放二进制数
     int B[1000][32]={0};           //存放两两比较的汉明距离
     int i,j,k,n;
     int m=0;
     scanf("%d ",&n);
     for(i=0;i<n;i++)
     {
      scanf("%d",&a[i]);
     }
     
     for(i=0;i<n;i++)
     {
      j=0;
      while(a[i]>0)
      {
       A[i][j]=a[i]%2;
       a[i]=a[i]/2;
       j++;
       }
       m=j;  
     }
     {
      for(j=i+1;j<n;j++)
      {
       int h=0;
       for(k=0;k<m;k++)
       {
        if(A[i][k]!=A[j][k])
        {
         h++;
        }
       }
       B[i][j]=h;
      }
       
     }
     /*
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      {
       printf("%d ",B[i][j]);
      }
      printf(" ");
     }
     */
     int max=B[0][0];
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      {
       if(max<B[i][j])
       {
        max=B[i][j];
       }
      }
     }
     printf("%d ",max);
     return 0;
    }

  • 相关阅读:
    git切换分支报错解决
    网上看到的一个布局神器
    js获取滚动条,文档,浏览器高度
    使用iView-cli创建一个pc端网页(1)
    ajax详解与用途
    JavaScript中for/in和for的区别
    排序
    Java中getResourceAsStream的用法
    java程序打包成exe的总结
    使用7zip把jre集成到绿色运行程序内
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/12897766.html
Copyright © 2020-2023  润新知