题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712

题目大意:任意两个数按位异或后二进制中含1的个数被称为海明距离,给定n个数,求出任意其中两个最小的海明数,输入是16进制。

Sample Input
2
2
12345
54321
4
12345
6789A
BCDEF
0137F
 
Sample Output
6
7

分析:用随机数来模拟,加srand()函数,放置产生伪随机数。代码有2个。

代码1:

 # include<iostream>
# include<cstdio>
# include<cstring>
# include<ctime>
# include<cstdlib>
# define INF 0x3f3f3f3f using namespace std; int cmp[][];
char data[][]; int solve(int q,int w)
{
int a,b,ret=;
for(int i=; i<; i++)
{
char x = data[q][i];
char y = data[w][i];
if(x>='' && x<='')
a = x-'';
else
a = x-'A' + ;
if(y>='' && y<='')
b = y-'';
else
b = y-'A' + ;
ret += cmp[a][b];
}
return ret;
}
int main()
{
int i,j;
for(i=; i<; i++)
{
for(j=; j<; j++)
{
int ans=;
int tmp = i^j;
for(int k=; k<; k++)
if((<<k) & tmp)
ans ++;
cmp[i][j] = ans;
}
} int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=; i<=n; i++)
scanf("%s",data[i]);
int ans = INF;
srand((unsigned)time(NULL));
for(i=; i<=; i++)
{
int a = rand()%n + ;
int b = rand()%n + ;
if(a==b)
b= b%n+;
int tmp = solve(a,b);
if(tmp < ans)
ans = tmp;
}
printf("%d\n",ans);
}
return ;
}

代码2:

 # include<iostream>
# include<cstdio>
# include<cstring>
# include<ctime>
# include<cstdlib>
# define INF 0x3f3f3f3f using namespace std; int data[]; int get_one(int x)
{
int ret = ;
while(x)
{
ret ++;
x = x&(x-);
}
return ret;
}
int main()
{
srand((unsigned)time(NULL));
int T,n,i;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=; i<n; i++)
scanf("%x",&data[i]);
int ans = INF;
for(i=; i>=; i--) //好奇怪,这里从前往后循环返回WA
{
int a = rand()%n ;
int b = rand()%n ;
if(a != b)
ans = min(ans,get_one(data[a]^data[b]));
}
printf("%d\n",ans);
}
return ;
}

HDU 4712 Hamming Distance(随机算法)的更多相关文章

  1. hdu 4712 Hamming Distance ( 随机算法混过了 )

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  2. HDU 4712 Hamming Distance(随机算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4712 解题报告:输入n个数,用十六进制的方式输入的,任意选择其中的两个数进行异或,求异或后的数用二进制 ...

  3. hdu 4712 Hamming Distance 随机

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  4. hdu 4712 Hamming Distance(随机函数暴力)

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

  5. HDU 4217 Hamming Distance 随机化水过去

    Hamming Distance Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  6. Hamming Distance(随机算法)

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 题意:计算任意两个十六进制的数异或后1的最少个数. 思路:用随机数随机产生两个数作为下标,记录这两个数异或 ...

  7. hdu 4712 Hamming Distance(随机数法)

    d.汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量, 我们以d(x,y)表示两个字x,y之间的汉明距离.对两个字符串进行异或运算,并统计结果为 ...

  8. hdu 4712 Hamming Distance bfs

    我的做法,多次宽搜,因为后面的搜索扩展的节点会比较少,所以复杂度还是不需要太悲观的,然后加上一开始对答案的估计,用估计值来剪枝,就可以ac了. #include <iostream> #i ...

  9. hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...

随机推荐

  1. 如何将SQL Server运行到Windows Azure上

    从2012年6月6日开始,Windows Azure上一些强大的新功能现在可用于预览,包括新的Windows Azure虚拟机(VM).其中有关Windows Azure虚拟机最强大的一件事是他们利用 ...

  2. Android 画直线并实现拖动

    自定义View,在onDraw()方法中绘制一条直线,在onTouch()方法中监听手指的移动. public class AroundDragView extends View implements ...

  3. PHP使用SwiftMailer发送邮件

    用到了swiftmailer 的lib库 官方网址:http://swiftmailer.org/ require_once 'lib/swift_required.php';//给我发送邮件func ...

  4. Docker系列(四)Dockerfile

    基本语法 使用 #来注释 FROM 指令告诉Docker使用哪个镜像作为基础 接着是维护者信息 RUN 开头的指令会在创建中运行,比如安装软件包 FROM 格式: FROM<image>或 ...

  5. Mac IDEA快捷键积累

    切来切去:Ctrl+Tab 在打开的不同类中切换来切换去 完美代码结构:Alt+Command+L 不同编辑点跳转:Alt+Command+↔️ 快速重写:Ctrl+N 快速选择代码:Alt+Shif ...

  6. Java和.NET的GZIP压缩功能对比

    本文主要比较了Java和.NET提供的GZIP压缩功能. 介绍 在本文中,我们将讨论Java和.NET提供的GZIP压缩功能,并且用实例来说明哪个压缩方法更佳. 在Java中,我们有提供GZIP压缩的 ...

  7. 设置Windows的TCP/IP属性和内部网络号码

    这里,以Windows XP和Windows 7版本为例. 在安装了IPX/SPX协议或TCP/IP协议的Windows计算机上可以设置计算机的内部网络号码,主要可以防止进行局域网连接时出现冲突现象. ...

  8. mongodb 在windows上安装为服务

    // mongo 也是先安装扩展 在安装为服务 首先 先下载mongodb的压缩包 解压(一个bin文件夹 三个文件) 在目录下 新建立一文件夹 mongodb 然后将解压的内容放进去 然后在mong ...

  9. DataTable 导出到 Excel 类

    底层类: #region DataTable 导出到 Excel /// <summary> /// DataTable 导出到 Excel /// </summary> // ...

  10. "判断this指针是不是null有什么意义呢"

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:"判断this指针是不是null有什么意义呢".