Can someone help me solve this problem?

dynamic-programming
recursion

#1

I came across this problem in a coding test. My solution gave few WA and TLE in some test cases…

You are given X different type of candies represented by 1, 2, 3… X. There are N people each having a list of their favorite candies. You need to find number of ways to distribute these candies such that:

  1. Each person gets exactly one candy from their list of favorite candies.
  2. No two person have same type of candy.

X<= 200, N<=10 and sizeoffavoritelist of each person <= X.

For this problem, I wrote a recursive function, in which for each person it had choice of taking any unvisited candy. But, somehow it gave some WA and TLE. Can someone provide some test cases or correct approach?


#2

This problem reminds me of a very good problem on codechef itself.
https://www.codechef.com/AUG14/problems/TSHIRTS go through the editorial there. This can be done using bitmasking with dp. I hope that u will get a lot help from the editorial itself. Let me know if u still have any doubt.