#include <bits/stdc++.h>
using namespace std;
int maxHamming(int arr[], int n)
{
int brr[2 * n + 1];
for (int i = 0; i < n; i++) {
brr[i] = arr[i];
brr[n + i] = arr[i];
}
int maxHam = 0;
for (int i = 1; i < n; i++) {
int currHam = 0;
for (int j = i, k = 0; j < (i + n); j++, k++)
if (brr[j] != arr[k])
currHam++;
if (currHam == n)
return n;
maxHam = max(maxHam, currHam);
}
return maxHam;
}
int main()
{
int arr[] = { 2, 4, 6, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << maxHamming(arr, n);
return 0;
}
Python 查找另一个数组,使得汉明与原数组的距离最大
def maxHamming( arr , n ):
brr = [0] * (2 * n + 1)
for i in range(n):
brr[i] = arr[i]
for i in range(n):
brr[n+i] = arr[i]
maxHam = 0
for i in range(1, n):
currHam = 0
k = 0
for j in range(i, i + n):
if brr[j] != arr[k]:
currHam += 1
k = k + 1
if currHam == n:
return n
maxHam = max(maxHam, currHam)
return maxHam
arr = [2, 4, 6, 8]
n = len(arr)
print(maxHamming(arr, n))
C 查找另一个数组,使得汉明与原数组的距离最大
#include <stdio.h>
int max(int num1, int num2)
{
return (num1 > num2) ? num1 : num2;
}
int maxHamming(int arr[], int n)
{
int brr[2 * n + 1];
for (int i = 0; i < n; i++) {
brr[i] = arr[i];
brr[n + i] = arr[i];
}
int maxHam = 0;
for (int i = 1; i < n; i++) {
int currHam = 0;
for (int j = i, k = 0; j < (i + n); j++, k++)
if (brr[j] != arr[k])
currHam++;
if (currHam == n)
return n;
maxHam = max(maxHam, currHam);
}
return maxHam;
}
int main()
{
int arr[] = { 2, 4, 6, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", maxHamming(arr, n));
return 0;
}
Javascript 查找另一个数组,使得汉明与原数组的距离最大f3
<script>
function maxHamming(arr, n)
{
let brr = new Array(2 *n + 1);
for (let i = 0; i < n; i++){
brr[i] = arr[i];
brr[n+i] = arr[i];
}
let maxHam = 0;
for (let i = 1; i < n; i++)
{
let currHam = 0;
for (let j = i, k=0; j < (i + n); j++,k++)
if (brr[j] != arr[k])
currHam++;
if (currHam == n)
return n;
maxHam = max(maxHam, currHam);
}
return maxHam;
}
let arr = [2, 4, 6, 8];
let n = arr.length;
document.write(maxHamming(arr, n));
</script>