当前位置:首页 C++ > 正文

c++题目:车厢重组

作者:野牛程序员:2023-09-04 17:12:41 C++阅读 2625

【题目描述】        在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转180度,则可以把相邻两节车厢的位置交换,用这种方法可以重新排列车厢的顺序。于是他就负责用这座桥将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。 【输入】        有两行数据,第一行是车厢总数N(不大于10000),第二行是N个不同的数表示初始的车厢顺序。 【输出】        一个数据,是最少的旋转次数。 【输入样例】 4 4 3 2 1 【输出样例】 6



#include <iostream>

int main() {
    int N;
    std::cin >> N;
    int carriages[10000];

    for (int i = 0; i < N; ++i) {
        std::cin >> carriages[i];
    }

    int steps = 0;

    for (int i = 0; i < N - 1; ++i) {
        for (int j = 0; j < N - i - 1; ++j) {
            if (carriages[j] > carriages[j + 1]) {
                // Swap carriages[j] and carriages[j + 1]
                int temp = carriages[j];
                carriages[j] = carriages[j + 1];
                carriages[j + 1] = temp;
                steps++;
            }
        }
    }

    std::cout << steps << std::endl;
    return 0;
}

这个C++程序会计算出将初始的车厢顺序排列成从小到大需要的最少旋转次数。你可以将输入样例放入标准输入,并从标准输出获取结果。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击