首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

HDU 2016 題解:最小值交換到首位(C 語言實現)

     編輯:關於C語言

HDU 2016 - 找最小值並與首元素交換

題目大意: 讀入 n (n<100) 個整數,找出最小值並將其與第一個數交換,輸出交換後的序列。多組測試數據,n=0 結束。

算法思路

  1. 讀入 n,若 n=0 退出。
  2. 讀入 n 個整數存入數組。
  3. 遍歷數組記錄最小值及其下標 `min_idx`(初始假設第一個最小)。
  4. 若 `min_idx != 0`,交換 `a[0]` 與 `a[min_idx]`。
  5. 輸出數組,元素間空格分隔,行末換行。

AC 代碼

#include 

int main() {
    int n, a[100];
    while (scanf("%d", &n) == 1) {
        if (n == 0) break;
        for (int i = 0; i < n; i++) scanf("%d", &a[i]);

        int min_idx = 0;
        for (int i = 1; i < n; i++)
            if (a[i] < a[min_idx]) min_idx = i;

        if (min_idx != 0) {
            int t = a[0]; a[0] = a[min_idx]; a[min_idx] = t;
        }

        for (int i = 0; i < n; i++) {
            if (i) printf(" ");
            printf("%d", a[i]);
        }
        printf("\n");
    }
    return 0;
}

關鍵點提示

  • 數組下標從 0 開始,題目「最前面」對應 `a[0]`。
  • 最小值可能不唯一,**交換第一個遇到的最小值**(即最小下標)即可,題目無特殊要求。
  • 輸出格式嚴格:行內空格分隔,**行末無多餘空格**,每組佔一行。
  • 輸入可能包含多行,`scanf` 自動跳過空白,`while(scanf(...)==1)` 穩健讀取。

測試樣例

輸入:
4 2 1 3 4
5 5 4 3 2 1
0

輸出:
1 2 3 4
1 4 3 2 5
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved