一组数,求最少交换几次使得数组有序
来源:互联网 发布:淘宝代销发货怎么联系 编辑:程序博客网 时间:2024/05/22 23:58
http://www.lightoj.com/volume_showproblem.php?problem=1166
从后往前贪心,把i位置上的数放到i位置上(对不起,我只知道AC)
View Code
#include<stdio.h>
#include<iostream>
using namespace std;
int a[110];
int main()
{
int t,n,i,j,cases=1;
scanf("%d",&t);
for(cases=1;cases<=t;cases++)
{
int tot=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=n;i>=1;i--)
if(a[i]!=i)
{
tot++;
for(j=i-1;j>=1;j--)
{
if(a[j]==i)
{
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
printf("Case %d: %d\n",cases,tot);
}
}
- 一组数,求最少交换几次使得数组有序
- 转成有序数组的最少交换次数
- 数组中求一组数的最大值
- UVA331求排序过程交换次数最少的种类数
- 两个有序的数组,求中间数
- 洗牌!打乱一组有序数
- 二分法查找一组有序数
- 使序列有序的最少交换次数
- 使序列有序的最少交换次数
- 使序列有序的最少交换次数
- 求一组有序数组中C(n,2)组元素之间质数个数总和
- 找到最大的三个数最少调用几次函数
- 二分求两个有序数组第k大的数
- 行列有序数组求给定数是否存在
- 一个无序数组,删除最少的数,使其变得有序
- 求一组数的子集
- 一个有序数组中找出两个数,使得两个数的和等于X的C++实现源代码
- 有序数组求交集
- zoj 3574 求给定区间内n条线段能将区间内的区域划分成几个区域
- zoj 2974 矩阵连乘
- hdu 3245 zoj zju 3188 树形DP
- poj 3909 二分
- poj 3342 树形DP
- 一组数,求最少交换几次使得数组有序
- zoj 1440 zju
- poj 2631 poj 1985 树的直径 树的最长链
- poj 2342 树形DP
- poj 3352 边双连通
- zoj 3583
- poj 1637 求混合图的欧拉回路
- 最大权闭合图
- poj 2987 最大权闭合图