---
# System prepended metadata

title: Q2. Maximum Capacity Within Budget
tags: [Leetcode]

---

# Q2. Maximum Capacity Within Budget

**練習日期：** 2026-01-18
**類型：** Weekly Contest 485

## 📘 題目敘述

給定兩個長度相同的整數陣列：

- `costs[i]`：第 `i` 個設備的花費
- `capacity[i]`：第 `i` 個設備所提供的容量

以及一個整數 `budget`，代表可使用的總預算。

你可以選擇：
- **不選任何設備**
- **只選一個設備**
- **或選兩個不同的設備**

前提是所選設備的總花費 **小於 `budget`**。

請回傳在預算限制內，**可以達到的最大總容量**。


### 條件限制
- `1 ≤ costs.length == capacity.length ≤ 100`
- `0 ≤ costs[i], capacity[i], budget ≤ 10^5`


## 🧠 解題思路（但最後TLE）

我的想法是直接把所有「可能的選擇情況」都列出來比較：

這題最多只能選 **兩個設備**，因此所有情況其實只有三種：

1. 不選任何設備（容量為 0）
2. 只選一個設備
3. 選兩個不同的設備

因為陣列長度不大，我選擇用 **暴力枚舉** 的方式，
直接檢查每一種可能，並在符合預算的情況下更新最大容量。


### 所有變數

- `n`：設備的數量（`costs.size()`）
- `ncap`：目前找到的最大總容量
- `i, j`：用來枚舉設備索引的迴圈變數


## 🪜 主要流程步驟

### 第一部分：只選一個設備

我先考慮「只選一個設備」的情況：

- 逐一檢查每個設備 `i`
- 若 `costs[i] < budget`
  - 表示單獨購買這個設備是可行的
- 在所有可行的設備中
  - 持續更新最大的 `capacity[i]`

這一步是為了處理「最佳解只需要一個設備」的情況。

---

### 第二部分：選兩個不同的設備

接著考慮「選兩個設備」的情況：

- 使用兩層迴圈枚舉所有 `(i, j)` 且 `i < j`
- 對每一組設備：
  - 檢查 `costs[i] + costs[j] < budget`
  - 若符合預算限制
    - 計算總容量 `capacity[i] + capacity[j]`
    - 與目前的 `ncap` 比較，更新最大值

這樣可以確保所有「兩設備組合」都被完整檢查過。

---

### 為什麼這樣做是可行的？

- 題目限制最多只能選兩個設備
- 資料規模允許 `O(n^2)` 的解法
- 暴力枚舉能完整涵蓋所有可能情況
- 邏輯直覺、好驗證、不容易寫錯


## 💻 程式碼實作

```cpp
class Solution {
public:
    int maxCapacity(vector<int>& costs, vector<int>& capacity, int budget) {
        int ncap = 0;
        int n = costs.size();

        // 只選一個設備
        for (int i = 0; i < n; i++) {
            if (costs[i] < budget && capacity[i] > ncap) {
                ncap = capacity[i];
            }
        }

        // 選兩個不同的設備
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                if (costs[i] + costs[j] < budget) {
                    if (capacity[i] + capacity[j] > ncap) {
                        ncap = capacity[i] + capacity[j];
                    }
                }
            }
        }

        return ncap;
    }
};
```

## 🔗 題目連結
https://leetcode.com/contest/weekly-contest-485/problems/maximum-capacity-within-budget/description/