▲数组瞎整 提高组【2011】四4 C++版
#include<iostream>
#include<cstring>
#include<string>
using namespace std;
const int SIZE=10000;
const int LENGTH=10;
int n,m,a[SIZE][LENGTH];
int h(int u,int v){
int ans,i;
ans=0;
for(i=1;i<=n;i++)
if(a[u][i]!=a[v][i])ans++;
return ans;
}
int main(){
int sum,i,j;
cin>>n;
memset(a,0,sizeof(a));
m=1;
while(1){
i=1;
while((i<=n) && (a[m][i]==1))i++;
if(i>n)break;
m++;
a[m][i]=1;
for(j=i+1;j<=n;j++)a[m][j]=a[m-1][j];
}
// for(int i=1;i<=128;i++){
// for(int j=1;j<=7;j++)printf("%d ",a[i][j]);
// puts("");
// }
sum=0;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
sum+=h(i,j);
cout<<m<<endl;
return 0;
}
本题为格雷码


浙公网安备 33010602011771号