ACM入门刷题之路——牛客竞赛语法入门班数组字符串习题1008

题目来源:牛客竞赛语法入门班数组字符串习题1008

题目描述

在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。

比如一个元素个数为4的数列,其元素为2,4,3,1,则(2,1),(4,3),(4,1),(3,1)是逆序,逆序数是4,现在求给定数列的逆序数

输入描述

第一行为N,表示数列的元素个数(N<=1000)

第二行为N个用空格隔开的整数,其值在int范围内

输出描述

输出占一行,为逆序数的个数

示例1

输入

4
2 4 3 1

输出

4

解题思路

先将所给出的数据输入到数组中,然后从数组中第一项开始,对数组中的每一项判断是否大于其后面的项。

AC代码

#include <bits/stdc++.h>

int main(){

    int n,i,j,num = 0;

    int a[1050];

    scanf("%d",&n);

    for(i = 0;i < n;i++){

        scanf("%d",&a[i]);

    }

    for(i = 0;i < n;i++){

        for(j = i + 1;j < n;j++){

            if(a[i] > a[j]){

                num++;

            }

        }

    }

    printf("%d",num);

    return 0;

}
posted @ 2021-12-29 21:57  北冥琉玥  阅读(64)  评论(0)    收藏  举报