iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
佛心分享-刷題不只是刷題

CPE C++ 刷題系列 第 29

CPE C++ 刷題 Day 29

  • 分享至 

  • xImage
  •  

今天來解YKL33(UVA299):Train Swapping

Train Swapping

https://ithelp.ithome.com.tw/upload/images/20241013/20155574iCVac6QZg6.png
https://ithelp.ithome.com.tw/upload/images/20241013/20155574nt7XM2d0ED.png

目的將序列排序
計算交換的次數

這裡我們用Bubble Sort

BubbleSort(A):
    n = length(A)
    for i = 0 to n - 1 do:
        swapped = false
        for j = 0 to n - i - 2 do:
            if A[j] > A[j + 1] then:
                // 交换相鄰的元素
                swap(A[j], A[j + 1])
                swapped = true
        
        if swapped == false then:
            break

#include <iostream>

using namespace std;

int main(){
    int cases;
    cin >> cases;
    while(cases--){
        int n;
        cin >> n;
        cin.ignore();
        int arr[n];
        for(int i=0;i<n;i++){
            int nums=0;
            cin >> nums;
            arr[i] = nums;
        }
        
        int count = 0;
        for(int i = 0; i < n; i++){
            bool swapped = false;
            for(int j = 0; j < n; j++){
                if(arr[j] > arr[j + 1]){
                    swapped = true;
                    int tmp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = tmp;
                    count++;
                }
            }
            if(swapped == false) break;
        }
        cout << "Optimal train swapping takes " << count << " swaps." << endl;
    }
    return 0;
}


上一篇
CPE C++ 刷題 Day 28
下一篇
CPE C++ 刷題 Day 30
系列文
CPE C++ 刷題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言