【APCS】2023年6月題解

題解整理

吳邦一 HackMD (搜尋 “202306” 關鍵字)
謝一 HackMD (完整)
Coding Prep 網站 (完整)
程式怪 YouTube (完整)
海牛 Facebook (只有短評+文字解析)

P1:路徑偵測

你在二維座標系的 (0, 0),給你 n 個座標,你會按照這些座標移動,求左轉、右轉、迴轉的次數。
ZeroJudge 連結

解法:比較目前座標 (x, y) 與前次座標 (px, py) 的變化。

#include <iostream>
using namespace std;

int main(){
    int n, x, y, face = 1, px, py, l = 0, r = 0, re = 0;
    cin >> n;
    for(int i=0; i<n; i++){
        cin >> x >> y;
        if(i != 0){
            if(face == 1){
                if(y > py) l++, face = 2;
                else if(y < py) r++, face = 4;
                else if(x < px) re++, face = 3;
            }else if(face == 2){
                if(x < px) l++, face = 3;
                else if(x > px) r++, face = 1;
                else if(y < py) re++, face = 4;
            }else if(face == 3){
                if(y < py) l++, face = 4;
                else if(y > py) r++, face = 2;
                else if(x > px) re++, face = 1;
            }else if(face == 4){
                if(x > px) l++, face = 1;
                else if(x < px) r++, face = 3;
                else if(y > py) re++, face = 2;
            }
        }
        px = x, py = y;
    }
    cout << l << ' ' << r << ' ' << re << '\n';
}

P2:特殊位置

給你 a[n][m],求離 (i, j) 曼哈頓距離為 a[i][j] 內的點數值總和 % 10 為 a[i][j] 的特殊位置。
ZeroJudge 連結

解法:硬暴即可。

#include <iostream>
#include <vector>
using namespace std;

int main(){
    int n, m;
    cin >> n >> m;
    int a[n][m];
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            cin >> a[i][j];
        }
    }
    vector<pair<int, int>> v;
    for(int i=0; i<n; i++){
        for(int j=0; j<m; j++){
            int sum = 0;
            for(int x=0; x<n; x++){
                for(int y=0; y<m; y++){
                    if((abs(i-x) + abs(j-y)) <= a[i][j]){
                        sum += a[x][y];
                    }
                }
            }
            if(sum % 10 == a[i][j]) v.push_back({i, j});
        }
    }
    cout << v.size() << '\n';
    for(int i=0; i<v.size(); i++){
        cout << v[i].first << ' ' << v[i].second << '\n';
    }
}

P3:磁軌移動序列

題目:ZeroJudge k733

解法:撰寫中。

P4:開啟寶盒

題目:ZeroJudge k734

解法:撰寫中。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *