A Re-solving Heuristic for Dynamic Assortment Optimization with Knapsack Constraints