【发布时间】:2022-09-27 23:59:45
【问题描述】:
我的代码没有为像这样的输入运行
6
1 2 3 4 5 6 7
但它正在运行其他输入,如
7
1 2 3 4 5 6 7 8
当我为前一个输入运行程序时,它显示退出代码 134 但是当我为后面的输入运行时,它可以按预期与输出一起正常工作。
#include <limits.h>
#include <iostream>
using namespace std;
int helper(int* arr, int n, int pos) {
int r = pos + 2, l = pos - 2, ans = 0;
while (r <= n) {
ans += arr[r] * arr[r - 1] * arr[pos];
r++;
}
while (l >= 0) {
ans += arr[l] * arr[l + 1] * arr[pos];
l--;
}
if (pos != 0 && pos != n) ans += arr[pos] * arr[0] * arr[n];
return ans;
}
int matrixChainMultiplication(int* arr, int n) {
int ans = INT_MAX;
for (int i = 0; i <= n; i++) {
ans = min(ans, helper(arr, n, i));
}
return ans;
}
int main() {
int n;
cin >> n;
int* arr = new int[n];
for (int i = 0; i <= n; i++) {
cin >> arr[i];
}
cout << matrixChainMultiplication(arr, n);
delete[] arr;
}
-
当您使用调试器运行它时,它是什么第一的它做错了什么?
-
退出代码 134 表示程序被 SIGABRT 信号中止。
-
你的程序的目的是什么?它有什么作用?
-
当我运行您的代码时,您似乎在
helper()中有缓冲区溢出。 -
当使用调试器并且程序的执行在调用 matrixChainMultiplication 函数后返回到主函数时,它会显示 SIGABRT 信号。