Luogu P2036 [COCI2008-2009 #2] PERKET

今天我们来看一道题:Luogu P2036 [COCI2008-2009 #2] PERKET

这道题不难,典型的暴力枚举

由于食材数量随机,无法直接用循环解,但是可以使用递归

\(MY_{CODE:}\)

#include <bits/stdc++.h>

using namespace std;

int n, ans = 1e9 + 5;  // ans初始化值大于所有可用食材全部使用产生的总酸度和总苦度

int s[15], b[15];

void dfs(int tot, int k, int l) {  // k为当前酸度,l为当前甜度
    if (tot > n) {
        if (k == 1 && l == 0) return ;  // 对水进行特判
        ans = min(ans, abs(k - l));
        return ;
    }
    dfs(tot + 1, k, l);  // 选择不加第tot份食材,继续枚举
    dfs(tot + 1, k * s[tot], l + b[tot]);  // 选择加第tot份食材,继续枚举
}

int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> s[i] >> b[i];
    dfs(1, 1, 0);  // 默认是水
    cout << ans << endl;
    return 0;
}
posted @ 2024-06-04 20:24  Bramble_Marshall  阅读(1)  评论(0编辑  收藏  举报