火车站车厢排序问题的 C++ 实现
以下是使用 C++ 编写的解决该问题的代码: ```cpp #include <iostream> using namespace std; // 交换相邻两个元素的函数 void swap(int& a, int& b) { int temp = a; a = b; b = temp; } // 冒泡排序并计算交换次数 int bubbleSort(int arr[], int n) { int count = 0; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 交换相邻元素 swap(arr[j], arr[j + 1]); // 交换次数加 1 count++; } } } return count; } int main() { int n; // 输入车厢总数 cin >> n; int arr[10000]; // 输入车厢初始顺序 for (int i = 0; i < n; i++) { cin >> arr[i]; } // 调用冒泡排序函数并计算最少旋转次数 int rotations = bubbleSort(arr, n); // 输出最少旋转次数 cout << rotations << endl; return 0; } ``` ### 代码解释: 1. **`swap` 函数**:该函数用于交换两个整数的值,在交换相邻车厢位置时会用到。 2. **`bubbleSort` 函数**:实现了冒泡排序算法。通过两层循环比较相邻元素,如果顺序错误则交换它们,并记录交换的次数。这是因为在这个问题中,交换相邻车厢的位置就相当于旋转桥 180 度,所以交换次数就是最少旋转次数。 3. **`main` 函数**:首先读取车厢总数 `n`,然后读取 `n` 个车厢的初始顺序。接着调用 `bubbleSort` 函数计算最少旋转次数,并将结果输出。 ######[AI问答 | 489点数解答 | 2026-02-25 16:20:36]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)328
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)296
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)350
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)336
- sys_module 表结构与 Java 实体类 SysModule 详解(字节豆包 | 252点数解答 | 2025-04-09 10:54:17)208
- MySQL表与Java类:`sys_role` 的创建及实体类定义全解析(字节豆包 | 168点数解答 | 2025-04-10 14:39:47)209
- C++ 破解“国王游戏”弱化版:贪心排序算法巧求最少最大奖赏(DeepSeek | 550点数解答 | 2025-04-28 18:16:50)384
- 巧妙贪心排序:解决国王游戏中大臣奖赏最大化问题(DeepSeek | 1002点数解答 | 2025-05-10 20:58:15)186
- C++ 实现:用贪心算法解国王游戏(弱化版),使大臣获赏最大值最小(DeepSeek | 507点数解答 | 2025-05-10 20:59:01)169
- 6 - 4 军事体能成绩冒泡排序:输入轮数输出中间结果的实现(字节豆包 | 250点数解答 | 2025-12-25 15:42:51)35
- 陆军工程大学学员军事体能成绩冒泡排序:按指定轮数输出中间结果(字节豆包 | 250点数解答 | 2025-12-25 15:52:30)40
- Python 实现:四位数重组求最大最小数差值(字节豆包 | 144点数解答 | 2026-02-01 12:49:54)15