永发信息网

一道编程题:求逆序对的个数

答案:4  悬赏:60  手机版
解决时间 2021-04-07 11:22
给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目
输入:第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。
输出:两行,第一行为所有逆序对总数,第二行为本质不同的逆序对总数。
样例输入:
4
3
2
3
2

样例输出:
3
1
数据范围:N<=105。Ai<=105。时间限制为1s。

哪位大牛帮下忙,讲下怎么用归并排序或树状数组做,主要是第二问,麻烦讲详细的,有程序的最好,PASCAL和C++的都可以
最佳答案
#include<stdio.h>
#define N 105
void main()
{
int n,i,j,k=0,p,m=0;
int a[20];
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
getchar();
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]>a[j])
k++;
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(a[i]=a[j])
{
for(p=j+1;p<n;p++)
a[p-1]=a[p];
n--;
}
}
for(i=0;i<p;i++)
for(j=i+1;j<p;j++)
{
if(a[i]>a[j])
m++;
}

printf("%d\n%d",k,m);
}//呵呵,我只会用c写,不过结果是对的。
全部回答
前面改成int main(),如果测试程序有时间限制的话,这个算法不够优化,时间超出限制,不过改之后是可以运行的
6分之一,把26个数看成4个数来计算, 得出的答案是一样的, 就是六分之一
6分之一,把26个数看成4个数来计算, 得出的答案是一样的, 就是六分之一 再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
盐水辣椒的做法,盐水辣椒怎么做好吃,盐水辣
聚缘轩茶馆这个地址在什么地方,我要处理点事
人力资源管理类的文章最容易在哪个核心期刊上
鸽子能吃芝麻吗
如何将PDF文档转换成TXT格式以便于修改呢?
手机后台运行文件太多,一直持续好几天,请问
清华同方9寸平板电脑n918tftc b系列多少钱?
腌制咸鱼如何防苍蝇
我想知道 英雄联盟和DOTA哪个人气高 哪个好玩
女朋友问我介意不介意她不是处女,我该怎么办
广州市允许养罗威纳吗?
广州有哪些口碑好的数据分析培训机构呢?
为什么当一个矩阵与一个满秩矩阵相乘时,所
谁能代写一个单片机程序 洗衣机控制系统 C51
2017年播出哪些新的电视剧?
推荐资讯
雾眉掉痂后眉头颜色深还能改么
杀寇决的42集里冈本死了吗
九层塔除了罗勒,金不换之外还有没有更平常的
四川板鸭可以烹饪哪些美食
如果你女朋友和别的男生合唱咱们结婚吧 你会
己知√x-7+|y+15|=0求x加y的立方根
记账凭单怎么装订
如何用java遍历出xml中每一个attributeValue
蒸发和沸腾都是水从( )变成()的现象,在变化过
八字:丙子 庚子 庚辰 戊寅,男,求分析
求助!电脑重装系统装到一半时蓝屏,然后出现错
餐饮服务标语口号大全,心理测试部的口号和服
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?