最后一题怎么写吖?我的只能过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; }
1 5

相关推荐

牛客网
牛客企业服务