zoukankan      html  css  js  c++  java
  • 美团笔试-第二题最大汉明距离:

    题目描述

      给出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;
    }

  • 相关阅读:
    一个有趣的C语言问题
    PHP 管理树莓派
    JeeSite | 保存信息修改记录封装
    SQL Server学习内容(一)
    Java面试题大汇总
    Spring框架快速入门
    单例模式
    简要分析一下java中线程的生命周期
    mybatis中的高级查询
    mybatis中的分页插件
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/12897766.html
Copyright © 2011-2022 走看看