C++與演算法

解答 - 關注學生

先用陣列紀錄每個人的數值。

再跑過一次找最大、最小值。


先設定

  • 答案最大值變數 為 無限小 ,找到更大的就替換原來的值。
  • 答案最小值變數 為 無限大 ,找到更小的就替換原來的值。

再開始走過一遍所有數字即可。


但現實生活並不存在無限小、無限大這種數值。

思考看看,對這題而言,什麼可以拿來當無限小、無限大?

#include<iostream>
using namespace std;

int main()
{
    int N;
    int num[105];
    int i;
    int ans_min, ans_max;

    cin >> N;
    i = 0;
    while( i < N )
    {
        cin >> num[i];
        i = i+1;
    }


    ans_min = 20000;
    ans_max = 0;
    i = 0;
    while( i < N )
    {
        if( num[i] > ans_max )
            ans_max = num[i];
        if( num[i] < ans_min )
            ans_min = num[i];
        i = i+1;
    }

    cout << ans_max << " " << ans_min << endl;

    return 0;
}

思考

  • 這題一定需要用陣列嗎?