#43109: C++不用陣列解


812034alex@gmail.com (薛宇峻)

學校 : 不指定學校
編號 : 255754
來源 : [42.72.13.199]
最後登入時間 :
2024-10-11 23:16:16
m931. 1. 遊戲選角 -- 2024年1月APCS | From: [42.73.72.47] | 發表日期 : 2024-10-16 22:05

(以下純個人心得紀錄,說的不一定都對,歡迎指正!)

考慮有人可能根本還沒學過陣列(或懶得用),所以想出了一個不用陣列的解法。我的想法是只需要維護目前最大能力值p1得a1,d1和第二大能力值p2的a2,d2,再藉由關係比較不斷更新第一,二大能力值的a,d即可。 以下是我的程式:

#include<bits/stdc++.h>
using namespace std;
int main(){
    cin.tie(0);
    ios_base::sync_with_stdio(0);//加速輸入
    int n;
    int a,d;
    int p,p1=-1,p2=-1;
    int a1,d1,a2,d2;
    cin >> n;
    for(int i=0;i<n;i++){
        cin >> a >> d;
        int p = a*a + d*d;
            if(p>p1){//此時p最大 p1為第二大
                p2=p1;
                p1=p;
                a2=a1;d2=d1;
                a1=a;d1=d;
            }
            else if(p>p2){//此時p為第二大
                p2=p;
                a2=a;d2=d;
            }
    }
    cout << a2 << " " << d2 << '\n';
}
雖然可能不是最簡潔的寫法但可以在不使用陣列的情況下AC。

 
ZeroJudge Forum