标签:
题目大意:求n个两两hamming距离大于等于d的序列,每个元素是一个b bit的数
思路:仍然暴力大法好
1 /*{ 2 ID:a4298442 3 PROB:hamming 4 LANG:C++ 5 } 6 */ 7 #include<iostream> 8 #include<fstream> 9 #define maxn 500 10 using namespace std; 11 ifstream fin("hamming.in"); 12 ofstream fout("hamming.out"); 13 //#define fin cin 14 //#define fout cout 15 int hamming(int x,int y,int b) 16 { 17 int ans=0; 18 for(int i=1;i<=b;i++) 19 { 20 int u=x&1,v=y&1; 21 if(u!=v)ans++; 22 x>>=1;y>>=1; 23 } 24 return ans; 25 } 26 int ans[maxn]; 27 int main() 28 { 29 int n,b,d; 30 fin>>n>>b>>d; 31 for(int idx=1;idx<=n;idx++) 32 { 33 for(int i=0;i<=1<<(b+1)-1;i++) 34 { 35 int flag=0; 36 for(int j=1;j<idx;j++) 37 { 38 if(hamming(ans[j],i,b)<d){flag=1;break;} 39 } 40 if(!flag) 41 { 42 ans[idx]=i;break; 43 } 44 } 45 } 46 for(int i=1;i<n;i++) 47 { 48 fout<<ans[i]; 49 if(i%10==0)fout<<endl;else fout<<" "; 50 } 51 fout<<ans[n]<<endl; 52 return 0; 53 }
标签:
原文地址:http://www.cnblogs.com/philippica/p/4320409.html