最后一题怎么写吖?我的只能过40% int calculate(int time, int sum, vector<int> value) {  if (sum < 0 || time <= 0 || value.empty()) return 0;  int count = 0;  if (time == 1)  {   for (int i = 0; i < value.size(); i++)   {    if (value[i] == sum)     count++;   }   return count;  }  else if (time == 2)  {   int left = 0; int right = value.size() - 1;   while (left < right)   {    int tempsum = value[left] + value[right];    if (tempsum > sum)     right--;    else if (tempsum < sum)     left++;    else    {     count++;     left++;    }   }   return count;  }  for (int i = 0; i < value.size(); i++)  {   vector<int> temp = value;   temp.erase(temp.begin(), temp.begin() + i + 1);   count += calculate(time - 1, sum - value[i], temp);  }  return count; } int main() {  int selectNum, valueSum, numberOfGifts; //中间读取数据 vector<int> valueOfGifts;  sort(valueOfGifts.begin(), valueOfGifts.end());  int count = calculate(selectNum, valueSum, valueOfGifts);  cout << count;  return 0; }