WZOI 逆序对

该篇文章介绍了一个编程问题,要求计算一个整数序列中逆序对的数量,通过C++代码实现,利用两层循环枚举所有可能的逆序对组合。
摘要由CSDN通过智能技术生成
题目描述:

对于一个序列 A1,A2,A3,…,An−1,An,如果存在正整数 i,j 使得 1≤i<j≤n  而且 Ai>Aj, 则 (Ai,Aj) 这一对被称为 A 序列的一个逆序对,现给出序列 A,请求出其中逆序对的总对数。

输入格式:

第一行, 仅一个整数 n

第二行, 有n个数字, 第 i 个数字表示 Ai ,各个数字之间以一个空格隔开

输出格式:

仅一个整数, 表示所求逆序对数

样例输入:
4
3 2 4 1

样例输出:
4
提示:

对于50%的数据有1≤n≤500

对于100%的数据有1≤n≤1,000,0≤A[i]≤1,000

样例解释:

总共有4对,分别是第一个数3和第二个数2,第一个数3和第四个数1,第二个数2和第四个数1,第三个数4和第四个数1。

时间限制: 1000ms
空间限制: 256MB


这题的数据比较小,枚举所有可能即可,放心不会超时(最多1000²)。

#include <bits/stdc++.h>
using namespace std;
int i,a,b,c;
int main() {
	cin>>a;
	int s[a+1];
	for(i=1; i<=a; i++) cin>>s[i]; //输入
	for(i=1; i<=a; i++) for(b=a; b>=i; b--) if(s[b]<s[i]) c++; //枚举逆序对的数量
	cout<<c;
	return 0;
}

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值