Minimum Number of Work Sessions to Finish the Tasks LeetCode solution in C++
1// C++ Solution2class Solution {3public:4int minSessions(vector<int> &tasks, int sessionTime) {5const int N = tasks.size();6const int INF = 1e9;7vector<pair<int, int>> dp(1 << N, {INF, INF});8dp[0] = {0, INF};9for (int mask = 1; mask < (1 << N); ++mask) {10pair<int, int> best = {INF, INF};11for (int i = 0; i < N; ++i) {12if (mask & (1 << i)) {13pair<int, int> cur = dp[mask ^ (1 << i)];14if (cur.second + tasks[i] > sessionTime) {15cur = {cur.first + 1, tasks[i]};16} else17cur.second += tasks[i];18best = min(best, cur);19}20}21dp[mask] = best;22}23return dp[(1 << N) - 1].first;24}25};