Cześć wszystkim,
mam dziwny problem z Codility z zadaniem z permutacji.
Według Codility,permutację rozumieją jako:
"A permutation is a sequence containing each element from 1 to N once, and only once."
W celu spradzenia kod przechodzi test polegający na rzuceniu tylko jednej wartości.
Czy jedna wartośc to też permutacja?
Co dziwne w moim kodzie dałem warunek:
(N to liczba elementów danej nam tablicy A[k] )
if(N==1) return 1;
...i wywaliło błąd.Oczekują dla jednej wartości zwrócenia 0.
Gdy zatem zmieniłem aby przy jednej wartości zwracało 0,okazuje się ,że też źle...Jednak oczekują 1.
O co chodzi? ;0
To jakiś bład systemu?
Treść zadania:
"
A non-empty zero-indexed array A consisting of N integers is given.
A permutation is a sequence containing each element from 1 to N once, and only once.
For example, array A such that:
A[0] = 4
A[1] = 1
A[2] = 3
A[3] = 2
is a permutation, but array A such that:
A[0] = 4
A[1] = 1
A[2] = 3
is not a permutation, because value 2 is missing.
The goal is to check whether array A is a permutation.
Write a function:
int solution(int A[], int N);
that, given a zero-indexed array A, returns 1 if array A is a permutation and 0 if it is not.
"
Moje rozwiazanie w C:
#include <stdlib.h>
int solution(int A[], int N) {
if(N<=1) return 1;
int *tab=(int*)calloc(N,sizeof(int));
int i;
for(i=0;i<N;i++) tab[ A[i] -1 ]=1;
for(i=0;i<N;i++) if(tab[i]==0) return 0;
return 1;
}
Dodam jeszcze ,że przy warunku " if(N==1) return 0; " twierdzą również,że tablica 100 000 wartości,każdej identycznej też powinna być permutacją,mimo ,ze w instrukcji jest napisane wyraźnie " containing each element from 1 to N once, and only once "
Bardzo prosze o pomoc.