Чтобы найти количество различных чисел в массиве из l
го по r
го индекса, я написал блок кода, как:Подсчет количества различных чисел в массиве
int a[1000000];
//statements to input n number of terms from user in a.. along with l and r
int count=r-l+1; //assuming all numbers to be distinct
for(; l<=r; l++){
for(int i=l+1; i<=r; i++){
if(a[l]==a[i]){
count--;
break;
}
}
}
cout<<count<<'\n';
Объяснение Для того массив говорят, a = 5 6 1 1 3 2 5 7 1 2
из десяти элементов. Если мы хотим проверить количество различных чисел между [1] и [8], которое является вторым и девятым элементами (включая оба), логика, которую я попытался реализовать, сначала примет значение count = 8 (количество элементов), а затем он начинается с символа [1], который равен 6, и проверяет на наличие других 6 после него, если он найдет, он уменьшает счет на единицу и переходит к следующему номеру в строке. Таким образом, если после этого произойдет еще 6, это не будет включаться дважды.
Задача Я пробовал небольшие тестовые чехлы, и он работает. Но когда я пытался с большими данными, это не сработало, поэтому я хотел знать, где моя логика потерпит неудачу?
Более крупные данные, как и в других частях программы, а затем используются. Который дал неправильный вывод
Что вы подразумеваете под "did not" work? –
@ ig-melnyk Не работает, я имею в виду, что в логике есть проблема, которую я не могу понять. Он не дает желаемого результата. Я даю неправильный нет. различных чисел. Я просто хочу, чтобы вы проверили правильность моего алгоритма. Имеет смысл? –
Да. если (a [l] == a [ind]), что это? Предполагалось, что это «я»? –