本文主要是介绍299 - Train Swapping,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:299 - Train Swapping
题目大意:将火车车厢号按从小到大排序,只有相邻的两节车厢才能交换,计算最少的交换次数。
解题思路:泡沫排序法,每次都将剩余的无序区中的最小元素放到无序区的第一个位置,而且是相邻的数两两比较,进行调整。
#include<stdio.h>
#include<stdlib.h>const int N = 55;
int t, train[N], count, n;int main () {int i, j, tmp;scanf("%d", &t);while(t--) {scanf("%d", &n);for ( i = 0; i < n; i++)scanf("%d", &train[i]);count = 0;for(i = 0; i < n - 1; i++) {for(j = i + 1; j < n; j++ ) {if(train[i] > train[j]) {count++;tmp = train[i];train[i] = train[j];train[j] = tmp;}}}printf("Optimal train swapping takes %d swaps.\n", count);}return 0;
}
这篇关于299 - Train Swapping的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!