3
public int minSessions(int[] tasks, int sessionTime) {4
int n = tasks.length, MAX = Integer.MAX_VALUE;5
int[][] dp = new int[1 << n][2];9
for (int i = 1; i < (1 << n); i++) {13
for (int t = 0; t < n; t++) {14
if (((1 << t) & i) == 0) continue;16
int[] prev = dp[(1 << t) ^ i];17
if (prev[1] + tasks[t] <= sessionTime) {18
dp[i] = min(dp[i], new int[] {prev[0], prev[1] + tasks[t]});20
dp[i] = min(dp[i], new int[] {prev[0] + 1, tasks[t]});25
return dp[(1 << n) - 1][0];28
private int[] min(int[] d1, int[] d2) {29
if (d1[0] > d2[0]) return d2;30
if (d1[0] < d2[0]) return d1;31
if (d1[1] > d2[1]) return d2;