Array50. Дан целочисленный массив A размера N, являющийся перестановкой (определение перестановки дано в задании Array49). Найти количество инверсий в данной перестановке, то есть таких пар элементов AI и AJ, в которых большее число находится слева от меньшего: AI > AJ при I < J.
>Решение Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | program Array50; var a:array[1..10] of integer; N,i,i2, Num:Integer; check: Boolean; begin Write('N: '); Readln(N); for i:=1 to N do begin write(i,' :'); readln(a[i]); end; Num:=0; for i:=1 to N-1 do for i2:=i+1 to N do if a[i]>a[i2] then inc(Num); Writeln(Num); end. |
>
Решение C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include int main(void) { int a[10]; int n; printf("N: "); scanf("%i",&n); int i; for (i=0; i<n; ++i){ printf("a[%i] : ",i+1); scanf("%i",&a[i]); } int num=0,i2; for (i=0; i<n-1;++i){ for (i2=i+1; i2<n;++i2){ if (a[i]>a[i2]){ num++; } } } printf("%i \n",num); return 0; } |