`
java-mans
  • 浏览: 11413898 次
文章分类
社区版块
存档分类
最新评论

299 - Train Swapping

 
阅读更多

简单排序题,求交换的最少次数


#include <stdio.h>

int count,n;
int carriage[60];

int find(int x)
{
	for(int i=1;i<=n;i++)
		if(carriage[i]==x)
			return i;
	return -1;
}

void move(int x,int y)
{
	for(int i=y-1;i>=x;i--)
	{
		carriage[i+1]=carriage[i];
		count++;
	}
	
}

int main()
{
	int m;
	scanf("%d",&m);
	for(int cas=1;cas<=m;cas++)
	{
		count=0;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
			scanf("%d",&carriage[i]);
		for(int i=1;i<n;i++)
		{
			int pos=find(i);
			if(pos!=i)
			{
				move(i,pos);
				carriage[i]=i;
			}
		}
		printf("Optimal train swapping takes %d swaps.\n",count);
	}
	return 0;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics