크기가 4,9,16 또는 25 인 배열 (입력에 따라 다름)과 배열의 숫자가 같지만 하나씩 작습니다 (배열 크기가 9 인 경우 배열의 가장 큰 요소 인 경우). 8이 될 것입니다 숫자가 0으로 시작 및 배열에 대한 체크섬의 일종을 생성 할 수 있도록 몇 가지 알고리즘을 수행 할 수 있도록 2 배열은 전체 배열을 통해 반복 및 각 요소를 검사하지 않고 동일합니다 비교할 수 싶습니다. 하나씩.정수 배열의 체크섬?
어디에서 이런 종류의 정보를 얻을 수 있습니까? 나는 가능한 한 단순한 무언가가 필요하다. 고맙습니다. 배열의 숫자 - 모든
그래서 [0,1,1,2]가 유효하지 않습니다, 별개 반복적 인 요소가 있기 때문에 1 (:
편집 : 내가 원하는 단지에 분명합니다)
년 - 숫자 물질의 위치 때문에, [0,1,2,3] [3,2,1,0]
-THE 배열 번호 0을 포함 같은 아니다 그래서 이것은 또한 고려되어야한다.
편집 : http://en.wikipedia.org/wiki/Fletcher%27s_checksum#Straightforward
int fletcher(int array[], int size){
int i;
int sum1=0;
int sum2=0;
for(i=0;i<size;i++){
sum1=(sum1+array[i])%255;
sum2=(sum2+sum1)%255;
}
return (sum2 << 8) | sum1;
}
내가하지만 불행히도, 알고리즘이 작동하지 않는 리턴 라인을 무엇 아무 생각이 정직하기 : 여기 플레처의 알고리즘을 구현하기 위해 노력
좋아 . [2,1,3,0] 및 [1,3,2,0] 배열의 경우 동일한 체크섬을 얻습니다.
EDIT2 : 여기
괜찮 또 하나,이 또한 작동하지 않습니다 애들러 검사 http://en.wikipedia.org/wiki/Adler-32#Example_implementation
#define MOD 65521;
unsigned long adler(int array[], int size){
int i;
unsigned long a=1;
unsigned long b=0;
for(i=0;i<size;i++){
a=(a+array[i])%MOD;
b=(b+a)%MOD;
}
return (b <<16) | a;
}
입니다. 배열 [2,0,3,1]과 [1,3,0,2]는 동일한 체크섬을 생성합니다. 나는 여기에서 희망을 잃고있다, 어떤 생각?
입니다. 배열의 숫자는 고유하지 않습니다. 그래서 {1,2,2,4}가 유효합니까? –
> 배열의 숫자가 동일합니다 그 점에 대해 자세히 설명해 주시겠습니까? – jaffa
오, 미안해! 예, 숫자는 고유하므로 [1,2,2,4]는 유효하지 않습니다. – MinaHany