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

  • 相关阅读:
    Apache HttpClient 4.3.6 API
    java中double的四舍五入 BigDecimal
    Java--获取request中所有参数的方法
    request.getSession(true)和request.getSession(false)的区别
    jquery插件分页
    Qt 之模型/视图(自定义按钮)
    在QTableView中使用各种自定义委托
    tableview setData 设置数据(结构体对象)
    libcurl 使用
    qt MessageBOX 消息
  • 原文地址:https://www.cnblogs.com/sbb-first-blog/p/12897766.html
Copyright © 2011-2022 走看看