程序新手,正在做计蒜课“挑战难题”中的一道题:最大子阵列:
无奈代码在本地输入多组数据得到结果正常,但是就是通过不了...
希望各位大大能抽空看看我哪里错了,小白十分感谢 >_<
题目:
在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组 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肯定报错,所以不能这样写的