一组数,求最少交换几次使得数组有序

来源:互联网 发布:淘宝代销发货怎么联系 编辑:程序博客网 时间: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);
}
}



原创粉丝点击