▲数组瞎整 提高组【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;
}

  

本题为格雷码

 

posted @ 2016-10-12 02:50  qilinart  阅读(131)  评论(0)    收藏  举报