knakul853

Untitled

Jul 17th, 2020
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     bool canPartitionKSubsets(vector<int>& nums, int k) {
  4.        
  5.         int n = nums.size();
  6.         int sm = 0;
  7.         for(auto s:nums)sm+=s;
  8.        
  9.         if(sm%k!=0||k==0)return false;
  10.         vector<int>visit(n+1, 0);
  11.         sm = sm/k;
  12.        
  13.         return f(nums, visit,  0, sm, k, 0);
  14.        
  15.     }
  16.    
  17.     bool f(vector<int>& nums, vector<int>& visit, int cur,int sm, int k,int st)
  18.     {
  19.         if(k == 1)
  20.         {
  21.             return true;
  22.         }
  23.        
  24.         if(sm == cur){
  25.          return f(nums, visit, 0, sm , k-1, 0);
  26.         }
  27.        
  28.         for(int i=st;i<nums.size();i++)
  29.         {
  30.             if(!visit[i])
  31.             {
  32.                 visit[i] = 1;
  33.                
  34.                if(f(nums, visit, cur+nums[i], sm, k, i+1))return true;
  35.                 visit[i] = 0;
  36.             }
  37.            
  38.            
  39.         }
  40.        
  41.         return false;
  42.     }
  43. };
Add Comment
Please, Sign In to add comment