描述
最近,小童了解到一个叫“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中的一对整数(ai,aj),满足ai>aj且i<j。
知道这概念后,小童就想算一算给定的一段正整数序列中逆序对的数目。注意序列中可能有重复数字。
输入描述
第1行,一个数n,表示序列中有n个数。(n<=2500)
第2行,n个数,表示给定的序列。序列中每个数字不超过109。
输出描述
输出序列中逆序对的数目。
样例输入 1
6 1 2 3 3 5 6
样例输出 1
0
样例输入 2
5 5 1 1 0 4
样例输出 2
6
完整代码:
#include<bits/stdc++.h>
using namespace std;
int main() {
int n,p=0;
cin>>n;
int h[n]={};
for(int i=0;i<n;i++)cin>>h[i];
for(int i=0;i<n;i++)for(int j=i+1;j<n;j++)if(h[i]>h[j])p++;
cout<<p;
return 0;
}
以上内容均为原创;欢迎参考、借鉴!
但拒绝盗版;也禁止任何人在未经本人同意的条件下用于商业用途。
作者保留法律追究责任。