Train Swapping From:UVa, 299
来源:互联网 发布:vue.js页面自动跳转 编辑:程序博客网 时间:2024/06/10 16:36
Train Swapping
From:UVa, 299
Train Swapping
At an old railway station, you may still encounter one of the last remaining ``train swappers''. A train swapper is an employee of the railroad, whose sole job it is to rearrange the carriages of trains.
Once the carriages are arranged in the optimal order, all the train driver has to do, is drop the carriages off, one by one, at the stations for which the load is meant.
The title ``train swapper'' stems from the first person who performed this task, at a station close to a railway bridge. Instead of opening up vertically, the bridge rotated around a pillar in the center of the river. After rotating the bridge 90 degrees, boats could pass left or right.
The first train swapper had discovered that the bridge could be operated with at most two carriages on it. By rotating the bridge 180 degrees, the carriages switched place, allowing him to rearrange the carriages (as a side effect, the carriages then faced the opposite direction, but train carriages can move either way, so who cares).
Now that almost all train swappers have died out, the railway company would like to automate their operation. Part of the program to be developed, is a routine which decides for a given train the least number of swaps of two adjacent carriages necessary to order the train. Your assignment is to create that routine.
Input Specification
The input contains on the first line the number of test cases (N). Each test case consists of two input lines. The first line of a test case contains an integerL, determining the length of the train ( ). The second line of a test case contains a permutation of the numbers 1 throughL, indicating the current order of the carriages. The carriages should be ordered such that carriage 1 comes first, then 2, etc. with carriageL coming last.
Output Specification
For each test case output the sentence: 'Optimal train swapping takes S swaps.' where S is an integer.
Example Input
331 3 244 3 2 122 1
Example Output
Optimal train swapping takes 1 swaps.Optimal train swapping takes 6 swaps.Optimal train swapping takes 1 swaps.
c代码:
#include<stdio.h>#include<string.h>int main(){ int a[100]; int i,j,k,n,m; int swaps;/*for(i=0;i<n;i++) printf("%d ",a[i]);*/ //m--; scanf("%d",&m);swaps=0; while(m--) { swaps=0; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); for(j=0;j<n;j++) /* 气泡法要排序n次*/ { for(i=0;i<n-j-1;i++) /* 值比较大的元素沉下去后,只把剩下的元素中的最大值再沉下去就可以啦 */ { if(a[i]>a[i+1]) /* 把值比较大的元素沉到底 */ { k=a[i]; a[i]=a[i+1]; a[i+1]=k; swaps++; } } } /*for(i=0;i<n;i++) printf("%d ",a[i]);*/ //m--; printf("Optimal train swapping takes %d swaps.\n",swaps); } return 0;}c++;
#include<iostream>#include<cstdio>#include<cstring>#include<string>using namespace std;////////////////////class TrainSwapping{private: //int m; int f; int a[100]; int ans,temp;public: //void initial(){memset(a,0,100);ans=0;} void readcase(); void computing(); void outresult(){printf("Optimal train swapping takes %d swaps.\n",ans);}};void TrainSwapping::readcase(){ //int f; ans=0; scanf("%d",&f); for(int i=0;i<f;i++){ cin>>a[i]; } /*for(int i=0;i<f;i++){ cout<<a[i]; }*/}void TrainSwapping::computing(){ // int f; for(int i=0;i<f;i++){ for(int j=0;j<f-i-1;j++){ if(a[j]>a[j+1]){ temp=a[j];//zhege difa ng = .= a[j]=a[j+1]; a[j+1]=temp; ans++; } } }}int main(){ int n; TrainSwapping ts; cin>>n; while(n--){ //ts.initial(); ts.readcase(); ts.computing(); ts.outresult(); } return 0;}
- Train Swapping From:UVa, 299
- UVa 299 Train Swapping
- Uva 299 Train Swapping
- uva 299 Train Swapping
- UVA 299 - Train Swapping
- UVA 299-Train Swapping
- UVa 299 - Train Swapping
- uva-299 - Train Swapping
- UVa 299 - Train Swapping
- UVa 299 - Train Swapping
- UVa 299 - Train Swapping
- UVA 299 Train Swapping
- uva 299 - Train Swapping
- UVa - 299 - Train Swapping
- uva 299 Train Swapping
- uva - 299 - Train Swapping
- UVa 299 - Train Swapping
- UVa 299 - Train Swapping
- RMQ(Range Minimum/Maximum Query)-ST算法
- Linux 中怎么产生随机数
- homebrew笔记
- Ubuntu 12.04 输入法托盘图标消失
- [OGRE]基础教程来一发:来谈一谈基础框架
- Train Swapping From:UVa, 299
- 【转载内容】产品经理专业术语-BRD PRD等
- Java多线程之线程池(四)
- 国标645协议.....2007---项目所需四(应用层)
- Linux系统虚拟机安装VMware Tools
- ID CodesFrom:UVa, 146
- 高精度运算类bign
- 阅读文献的三大问题:坐不住,记不住,想不开
- android客户端从服务器端获取json数据并解析