Сравнение с подсчётом
Дан массив из ? чисел: ?1, ?2, . . ., ?? . Требуется для каждого элемента массива ?? посчитать количество элементов ??, стоящих правее (? < ?), но меньших него (?? > ?? ). В первой строке записано целое число ? (1 <= ? <= 100). Во второй строке через пробел записано ? целых положительных чисел — значения элементов массива. Гарантируется, что значения элементов не превосходят 100. Выведите ? целых чисел через пробел: по порядку для каждого элемента входного массива выведите количество элементов, удовлетворяющих описанному выше условию. Мой код вроде бы работает, но выводит какие-то странные значения. К примеру, при N=3 и вводе 3 2 1 на выходе должно быть 2 1 0, а у меня вообще 1 2 3. Посоветуйте, что можно сделать/исправить, пожалуйста :)
#include<stdio.h>
int main(){
int N, i, j, n;
n=0;
scanf("%d", &N);
int b[10000];
for(i=0; i<N; i++){
scanf("%d", &b[i]);
}
for(i=0; i<N; i++){
for(j=0; j<N; j++){
if((i<j)&&(b[i]>b[j])){
n++;
printf("%d", n);
}
}
}
return 0;
}
Ответы (1 шт):
Вы неверно проверяете, неверно считаете и неверно выводите. Долго расписывать каждую ошибку, возьмите готовое решение.
#include<stdio.h>
int main() {
int N;
scanf("%d", &N);
int b[100];
for (int i = 0; i < N; i++) {
scanf("%d", &b[i]);
}
for (int i = 0; i < N; i++) {
int n = 0;
for (int j = i + 1; j < N; j++)
if (b[i] > b[j]) n++;
printf("%d ", n);
}
}