题目
解法:回溯
暴力解:枚举每包糖果属于哪个孩子, 8 × 8 = 2 24 8\times8=2^{24} 8×8=224大概是 1 0 7 10^7 107
class Solution {
int[] q;
int k;
int[] sum;
int ans;
public int distributeCookies(int[] cookies, int k) {
q = cookies;
this.k = k;
sum = new int[8];
ans = Integer.MAX_VALUE;
dfs(0);
return ans;
}
private void dfs(int u) {
if (u == q.length) {
int mx = 0;
for (int i = 0; i < k; i++) {
mx = Math.max(mx, sum[i]);
}
ans = Math.min(ans, mx);
return ;
}
for (int i = 0; i < k; i++) {
sum[i] += q[u];
if (sum[i] < ans) {
dfs(u + 1);
}
sum[i] -= q[u];
}
}
}
进阶解法:模拟退火
模拟退火:启发式搜索