算法基础训练(二)
来源:互联网 发布:黑暗之魂3捏御姐数据 编辑:程序博客网 时间:2024/06/07 07:32
C时间限制:1 毫秒 | C内存限制:1 Kb
题目内容:
设A[1..n]是一个包含N个非负整数的数组。如果在i〈 j的情况下,有A[i]〉A[j],则(i,j)就称为A中的一个逆序对。要解决的问题是,给出一个数列,求出这个数列包含多少个逆序对
输入描述
有多组测试数据,每组数据占一行。首先输入一个整数N表示数组元素有N个,接下来输入N个整数N<=50 (无奈痛苦默默改小了数据...)(再次痛苦默默无奈再改小数据...)
输出描述
输出一个整数。
输入样例
5 3 1 4 5 2
输出样例
4hint:(样例解释,不需要输出)数组(3,1,4,5,2)的“逆序对”有<3,1>,<3,2><4,2><5,2>,共4个。
程序代码//此题很简单,主要是弄清楚有逆序对是什么,就是在一组数据中找到有几对逆序,既然这样,我们可以直接使用暴力,如,一组数据中有五个数,3,1,4,5,2,我们可以用暴力,先从3开始,找后面的数有多少个数比3小就有几对,3的逆序对找完了就找比1小的,再找比4小的,按此规律找下去,算法的世界复杂度是O(n^2),耗时长,但是思想简单,下一篇中有更优的方法。
#include<iostream>
using namespace std;
int check(int b[],int m,int n){
int count=0;
for(int j=m;j<n;j++){
if(b[m]>b[j]){
count++;
}
}
return count;
}
int main(){
int N;
while(cin>>N){
int a[60];
int s=0;
for(int i=0;i<N;i++){
cin>>a[i];
}
for(int i=0;i<N;i++){
s=s+check(a,i,N);
//cout<<check(a,i,N)<<s<<endl;
}
cout<<s<<endl;
}
return 0;
}
using namespace std;
int check(int b[],int m,int n){
int count=0;
for(int j=m;j<n;j++){
if(b[m]>b[j]){
count++;
}
}
return count;
}
int main(){
int N;
while(cin>>N){
int a[60];
int s=0;
for(int i=0;i<N;i++){
cin>>a[i];
}
for(int i=0;i<N;i++){
s=s+check(a,i,N);
//cout<<check(a,i,N)<<s<<endl;
}
cout<<s<<endl;
}
return 0;
}
0 0
- 算法基础训练(二)
- 算法基础训练题(二)
- 算法基础训练题(二)
- 算法基础训练题(一)
- 算法基础训练题(一)
- 算法基础训练题(一)
- 算法基础训练题(一)
- <基础训练>旅行家的预算(贪心算法)
- ios基础训练(一)
- 基础训练
- 基础训练
- 基础训练 完美的代价(贪心算法)
- 蓝桥杯 基础训练 完美的代价(转)
- 蓝桥杯基础训练图形显示(c/c++)
- 蓝桥杯-----------------基础训练 数列排序(Java代码)
- 事关基础训练 理应事事用心——浅议读研七件事(一)
- 蓝桥杯-基础训练-特殊的回文数(枚举)
- 基础训练 杨辉三角(java C 同步实现)
- 数据结构学习笔记——顺序表和链表的比较
- Spark Streaming:TCP(基本类型)数据源
- Python多进程编程
- 概率算法
- 功能测试机设计--测试模块--硬件部分
- 算法基础训练(二)
- AndroidUI-ViewPager简单demo模仿App翻页效果
- Floodligh Web UI显示的host比实际多且不会被清除的原因及解决方法
- swift入门———数组
- Codeforces Round #338 (Div. 2) B. Longtail Hedgehog(LIS)
- 如何拍出德味儿?
- 注册表自启动问题
- 关于串口与单片机通信电平转换的总结
- 关于正定矩阵是不是一定对称的问题