https://leetcode.com/contest/leetcode-weekly-contest-54/problems/partition-to-k-equal-sum-subsets/

1st slow but passed solution
#include <iostream>
#include <limits.h>
#include <vector>
#include <string>
#include <iterator>
#include <map>
#include <queue>
#include <list>
#include <algorithm>
#include <stdio.h>
#include <set>
#include <vector>

using namespace std;

class Solution {
public:
    bool check(vector<int>& nums, int start, vector<int>& remain) {
        bool complete = true;
        for (int i = 0; i < remain.size(); i++) {
            if (remain[i] != 0) {
                complete = false;
                break;
            }
        }
        if (complete) {
            return true;
        }
        for (int i = start; i < nums.size(); i++) {
            for (int j = 0; j < remain.size(); j++) {
                if (remain[j] >= nums[i]) {
                    remain[j] -= nums[i];
                    bool res = check(nums, (i + 1), remain);
                    if (res) {
                        return true;
                    }
                    remain[j] += nums[i];
                }
            }
            return false;
        }
    }

    bool canPartitionKSubsets(vector<int>& nums, int k) {

        sort(nums.begin(), nums.end(), greater<int>());

        int total = 0;
        for (int i = 0; i < nums.size(); i++) {
            total += nums[i];
        }
        int target = total / k;
        if (total % k != 0) {
            return false;
        }
        vector<int> remain(k, target);
        bool res = check(nums, 0, remain);
        return res;
    }
};

int main()
{
    //int test[7] = {4, 3, 2, 3, 5, 2, 1};
    int test[4] = {3, 3, 1, 3};
    vector<int> in(test, (test + sizeof(test)/sizeof(int)));
    Solution sol;
    bool r = sol.canPartitionKSubsets(in, 2);
    system("pause");
    return 1;
}

留言

這個網誌中的熱門文章

https://leetcode.com/contest/leetcode-weekly-contest-52/problems/longest-univalue-path/

https://leetcode.com/contest/leetcode-weekly-contest-52/problems/maximum-sum-of-3-non-overlapping-subarrays/