第一次听说随机算法,在给的n组数据间随机取两个组比较,当随机次数达到一定量时,答案就出来了。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define min(a,b) (a>b?b:a)
int a[101000];
int find(int b)
{
int ans=0;
while(b)
{
if(b&1)ans++;
b>>=1;
}
return ans;
}
int main()
{
int n,ans,i,j,k,t;
scanf("%d",&t);
while(t--)
{
ans=100;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%X",&a[i]);
for(i=0;i<150000;i++)
{
j=rand()%n+1;
k=rand()%n+1;
if(j==k)j=j%n+1;
ans=min(ans,find(a[j]^a[k]));
}
printf("%d\n",ans);
}
return 0;
}