UVA 299 Train Swapping 列车交换 冒泡排序简单模拟

题意:

到老舊的火車站你也許會遇到少數僅存的"車箱置換員",車箱置換員是車站的員工,他的工作是重新排列火車車箱。
當每節車箱(尤其是裝貨的車箱)都經過適當的排列之後,火車司機在每個車站卸貨時只需從最後車箱一節一節依序放下即可。
"車箱置換員"的職稱起源於一座位於河畔的火車站,鐵路橫跨在河的兩岸,當船隻要通行時,橋上的鐵路不像其他地方一樣會垂直升起,而是以河中央的橋墩為中心旋轉90度,此時船隻可從橋的左右兩旁經過。
另外,首位車箱置換員發現一件有趣的事,當橋在作旋轉時最多可乘載兩節車箱的重量,所以當橋作180度的旋轉之後,其上的車箱就被掉換位置了,因此他就能重新排列車箱(副作用就是車箱前後位置會相反,不過因為車箱被設計成可以前後移動,所以無所謂)。
現在幾乎所有車箱置換員都死光了,鐵路公司必須做車箱掉換的自動化,需要寫一個程式來計算共需置換相鄰的車箱幾次才能使所有車箱依序排好,寫程式的工作就交給你了。(from Ruby兔)


无力吐槽所有的车厢置换员都死光了。。。原题就是这样写的。。。

其实题目说这么多就是要让你模拟一下冒泡排序,然后求排序所需要的交换车厢的次数。

代码:

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn = 50;

int t[maxn];

int main() {
	int n;
	scanf("%d", &n);
	while (n--) {
		int T;
		scanf("%d", &T);
		for (int i = 0; i < T; i++)
			scanf("%d", &t[i]);
		int sw = 0;
		for (int i = 0; i < T; i++)
			for (int j = i; j < T; j++)
				if (t[i] > t[j]) {
					swap(t[i], t[j]);
					sw++;
				}
		printf("Optimal train swapping takes %d swaps.\n", sw);
	}
	return 0;
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值