程序新手,正在做计蒜课“挑战难题”中的一道题:最大子阵列:
无奈代码在本地输入多组数据得到结果正常,但是就是通过不了...
希望各位大大能抽空看看我哪里错了,小白十分感谢 >_<
题目:
在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组 A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列 [4,−1,2,1] 有最大的和 6.
输入格式
第一行输入一个不超过 1000 的整数 n。
第二行输入 n 个整数 A[i]。输出格式
第一行输出一个整数,表示最大的和。样例 1
输入:
3
1 1 -2
输出:
2
我的代码:
#include <cstdio>
#include <iostream>
using namespace std;
int AMax(int a[], int N)
{
int m = 0;
int sum[N+1][N+1];
for (int p = 0; p <= N; ++p) //初始化单个元素
{
sum[p][p] = a[p];
}
for (int i = 0; i < N; ++i) //求和
{
for (int j = i; j < N; ++j)
{
sum[i][j+1] = sum[i][j] + a[j+1];
}
}
for (int i = 0; i <= N; ++i) //比较
{
for (int j = i; j <= N; ++j)
{
if (sum[i][j] > m)
m = sum[i][j];
}
}
return m;
}
int main()
{
int n;
cin >> n;
int A[n];
for (int i = 0; i != n; ++i)
cin >> A[i];
cout << AMax(A, n-1);
return 0;
}
如果你改了程式碼,請把你的最新程式碼上傳以及NA的錯誤寄上來。
還有可以參考我的程式碼
你好,你在定義數組的時候不能寫成int A[n],因為編譯器在編譯的時候要為數組開闢確定的空間,你那個n是變量,只有運行的時候才能得到具體值,你在本地沒錯可能是你編譯器的事,可能你用的是g++什麼的吧,你用vs肯定報錯,所以不能這樣寫的