Problem 3 Minimum time to finish all jobs

Method 1先做出来

// Some code
public int minimumTimeRequire(int[] jobs, int k) {
    int[] result = {Integer.MAX_VALUE};
    int[] worker = new int[k];
    dfs(jobs, 0, result, worker, 0);
    return result[0];
}

private void dfs(int[] jobs, int index, int[] result, int[] worker, int max) {
    if (index == jobs.length) {
        result[0] = Math.min(result[0], max);
        return;
    }
    for (int i = 0; i < worker.length; i++) {
        worker[i] += job[index];
        dfs(jobs, index + 1, result, worker, Math.max(worker[i], max));
        worker[i] -= job[index];
    }
}

Method 2

// Some code

public int minimumTimeRequire(int[] jobs, int k) {
    int[] result = {Integer.MAX_VALUE};
    int[] worker = new int[k];
    dfs(jobs, 0, result, worker, 0);
    return result[0];
}

private void dfs(int[] jobs, int index, int[] result, int[] worker, int max) {
    if (index == jobs.length) {
        result[0] = Math.min(result[0], max);
        return;
    }
    for (int i = 0; i < worker.length; i++) {
        worker[i] += job[index];
        dfs(jobs, index + 1, result, worker, Math.max(worker[i], max));
        worker[i] -= job[index];
    }
}

Last updated