#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int canSum(int TargetSum, vector<int> numbers,unordered_map<int,int> memo) {
if (memo.find(TargetSum) != memo.end()) return memo[TargetSum];
if (TargetSum == 0) return true;
if (TargetSum < 0) return false;
for (int x : numbers) {
int remainder = TargetSum - x;
if (canSum(remainder, numbers, memo)) {
memo[TargetSum] = true;
return true;
}
}
memo[TargetSum] = false;
return false;
}
int main()
{
unordered_map<int, int> memo;
/*cout << canSum(7, { 2,3 }, memo) << '\n';
cout << canSum(7, { 5,3,4,7 }, memo) << '\n';
cout << canSum(7, {2, 4 }, memo) << '\n';
cout << canSum(8, {2,3,5}, memo) << '\n';*/
cout << canSum(300, {7,14}, memo) << '\n';
}
Witam, napisałem kod, który powinien być szybszy i wykonywać ostatni element w szybszym czasie, używając mapy która przechowuje nam pewne wartości, jednak program nie wyświetla ostatniego zapytania zbyt szybko. Co mogłem przeoczyć?