难度:普及-
算法:搜索
思路:类似于动态规划
分两种情况进行搜索:1.放入当前的配料 2.不放入当前的配料
ans是全局变量,再全局范围中找最优解
#include <bits/stdc++.h>
using namespace std;#define int long long
#define endl '\n'const int N = 20;int n;
int s[N],k[N];
int ans = 99999;//idx 表示当前食物的编号
//x 表示酸度的总和
//y 表示苦读的总和
void dfs(int idx, int x, int y){//idx > n 才能表示全部搜索完 if(idx > n){if(x == 1 && y == 0) return;ans = min(ans,abs(x - y));return;} //1.放入当前配料; 2.不放入当前配料 dfs(idx+1, x * s[idx], y + k[idx]);dfs(idx+1, x, y);
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> n;for(int i = 1; i <= n; i++){cin >> s[i] >> k[i];} dfs(1,1,0);cout << ans << endl;return 0;
}