配列からの非負の最大サブ配列を確認してください。 サブアレイは連続している必要があります。つまり、2番目と4番目の要素を選択して3番目の要素をスキップして作成されたサブアレイは無効です。セグメンテーションフォールトの取得(ベクトル宣言)
最大サブ配列は、サブ配列の要素の和で定義されます。サブアレイAは、sum(A)> sum(B)の場合、サブアレイBより大きい。
これは私のソリューションです:
vector<int> Solution::maxset(vector<int> &A) {
// Do not write main() function.
// Do not read input, instead use the arguments to the function.
// Do not print the output, instead return values as specified
// Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
vector <int> bla;
int sum[100]={0};
int k = 0;
int j = 1;
for (int i =0; i < A.size(); i++){
if (A[i] > -1){
sum[k] = A[i] + sum[k];
}
else {
k++;
}
}
cout<<sum[0]<<" ";
cout<<sum[1]<<" ";
cout << sum[2] << " ";
int s = 0;
for (int i =0; i< 100; i++){
if (s < sum[i]){
s = sum[i];
k = i;
}
}
cout << s;
int count = 0;
for (int i =0; i < A.size(); i++){
if (A[i] < 0) {
count ++;
}
if (count == k) {
int j = i+1;
int x = 0;
while (A[j] > 0 && j< (A.size()-1)) {
// bla[x] = A[j];
x++;
j++;
}
}
}
return bla;
}
私はラインBLAのコメントを解除する場合は、[X] [j]を=、私は、セグメンテーションエラーが発生します。誰かがこのエラーを解消する方法を説明できますか?私はスタックの中に十分なスペースがないことをどこかで読んでいます。私はどのように理解できません。 あなたはベクトルオブジェクトにサイズを渡すことができますかあなたはそれが0サイズのベクトルオブジェクトを作成するデフォルトコンストラクタです呼び出すことができますあなたの
は、デバッガを使用する方法については、適切な時期です。ところで、コードに欠陥があります。 – WhiZTiM
特定のサイズを持たないベクトルを定義すると、* empty *になります。その中のインデックスは* out of bounds *です。 –
@Someprogrammerdude次にインデックスを作成できない場合、どのようにベクトルに値を割り当てるのですか? –