Есть код функции на Python:
def Precalculate(n, k):
d = 0
a = [[1] * n]
totalSum = 1
maxValue = k
while d < 9 * n and totalSum <= maxValue:
d = d + 1
ad = [0] * n
last = s[n - 1]
tmp = 0
if (last - d >= 0):
tmp = tmp + 1
if (last + d <= 9):
tmp = tmp + 1
print(tmp)
ad[n - 1] = tmp
a.append(ad)
for j in range(n - 2, -1, -1):
sum = 0
for m in range(0, 10):
tmp = d - abs(s[j] - m)
if tmp >= 0:
sum = sum + a[tmp][j + 1]
ad[j] = sum
totalSum = totalSum + ad[0]
return a
Переписал ее на C++, но она работает некорректно:
vector<vector<int>> Precalculate(int n, int k, vector<int> &s) {
int d = 0;
vector<vector<int>> a(1, vector<int>(n));
for (int q = 0; q < n; q++) {
a[0][q]=1;
}
int totalSum;
totalSum = 1;
int maxValue = k;
int last;
vector <int> ad(n);
while (d < 9 * n && totalSum <= maxValue) {
d++;
last = s[n - 1];
int tmp = 0;
if (last - d >= 0) {
tmp++;
}
if (last + d <= 9) {
tmp++;
}
cout << tmp << endl;
ad[n - 1] = tmp;
a.push_back(ad);
for (int j = n - 2; j > -1; j--) {
int sum = 0;
for (int m = 0; m < 10; m++) {
tmp = d - abs(s[j] - m);
if (tmp >= 0) {
sum += a[tmp][j + 1];
}
}
ad[j] = sum;
}
totalSum += ad[0];
}
return a;
}
Выводят две функции при одинаковых входных данных разные результаты.
В чем ошибка и как ее исправить?
Заранее спасибо!