首页 > 代码库 > UVA1368

UVA1368

用一个二维数组装m个字符串,然后用一个数组装每个字符串的hamming距离。找到最小的hanming距离即可

#include<stdio.h>
#include<string.h>
//比较两个字符串有多少个元素不同 
int hamming(char s1[],char s2[],int n){
    int count=0;
    for(int i=0;i<n;i++)
        if(s1[i] != s2[i])
            count++;
    
    return count;
}

int main(){
    int m,n;
    char s[50][1000];
    int a[1000];
    int count;
    scanf("%d %d",&m,&n);
    for(int i=0;i<m;i++)
        scanf("%s",s[i]);
        
    for(int i=0;i<m;i++){
        count=0;
        for(int j=0;j<m;j++)
            count+=hamming(s[i],s[j],n);
        a[i]=count;
    }
    
    for(int i=0;i<m;i++)
        printf("a[%d]=%d\n",i,a[i]);
    

    int min=0;
    int mini=0;
    
    min=10000;
    for(int i=0;i<m;i++){
        if(a[i] < min){
            min=a[i];
            mini=i;
        }
        if(a[i] == min){
            if(strcmp(s[mini],s[i])>0)
                mini=i;
        }
    }
    printf("%s\n",s[mini]);
    
    return 0;
}

 

UVA1368