Cześć robię kod dla zadania : https://leetcode.com/problems/unique-paths/description/
Pierwszy kod działa poprawnie, a drugi już nie. Dlaczego tak jest?
//Działający kodzik:
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
string key;
int uniquePaths(int m,int n, unordered_map<string, int> memoization) {
key = to_string(m) + ',' + to_string(n);
if (memoization.find(key) != memoization.end()) return memoization[key];
if (m == 1 && n == 1)
return 1;
if (m == 0 || n == 0)
return 0;
memoization[key] = uniquePaths(m - 1, n, memoization) + uniquePaths(m, n - 1, memoization);
return memoization[key];
}
int main()
{
int m, n;
cin >> m >> n;
unordered_map<string, int> memoization;
cout << uniquePaths(m, n,memoization) << '\n';
return 0;
}
//Kod nie działa:
#include <iostream>
#include <unordered_map>
using namespace std;
string key;
unordered_map<string, int> memoization;
int uniquePaths(int m,int n) {
key = m + ',' + n;
if (memoization.find(key) != memoization.end()) return memoization[key];
if (m == 1 && n == 1)
return 1;
if (m == 0 || n == 0)
return 0;
memoization[key] = uniquePaths(m - 1, n) + uniquePaths(m, n - 1);
cout << memoization[key] << '\n';
return memoization[key];
}
int main()
{
int m, n;
cin >> m >> n;
//unordered_map<string, int> memoization;
cout << uniquePaths(m, n) << '\n';
return 0;
}