class Solution { public: /** * @param order: The order * @param pattern: The pattern * @return: Return the number of items do not meet the demand at least */ int getMin(int start, vector<int> & order, vector<vector<int>> & pattern) { int res = 0, Min = 99; for (int i = 0; i < order.size(); i++) res += order[i];
if (start == pattern.size()) { return min(res, Min); }
int temp = 99; for (int i = 0; i < order.size(); i++){ if (pattern[start][i] != 0) temp = min(temp, order[i] / pattern[start][i]); }
for (int i = 0; i <= temp; i++) { for (int j = 0; j < order.size(); j++) order[j] -= i*pattern[start][j]; Min = min(Min,getMin(start+1, order, pattern));