HAM12 - VOI 2012 Khoảng cách Hamming

Tác giả: RR

Ngôn ngữ: C++

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <iomanip>
#include <bitset>
#include <complex>

#define FOR(i,a,b) for(int i = a; i <= b; ++i)
#define FORD(i,a,b) for(int i = a; i >= b; --i)
#define REP(i,a) for(int i = 0; i < a; ++i)
#define MP make_pair
#define PB push_back

using namespace std;

char a[1011], b[1011];
int n, m, k;

int main() {
    scanf("%d%d%d\n", &n, &m, &k);
    gets(a);
    int res = 1000111;
    while (k--) {
        gets(b);
        int la = strlen(a), lb = strlen(b), ii, cnt;
        for(int i = 0; i < la; ++i) {
            ii = i; cnt = 0;
            for(int j = 0; j < lb; ++j) {
                if (b[j] != a[ii]) ++cnt;
                ++ii; if (ii == la) ii = 0;
            }
            if (cnt < res) res = cnt;
        }
    }
    printf("%d\n", res);
    return 0;
}

Download