EDIT: решена! Я рассматривал отрицательный номер теста как 0, вместо того, чтобы выход был отрицательным. Спасибо за помощь!Максимальная сумма целых чисел
Описание проблемы: https://www.codeeval.com/open_challenges/17/
Я продолжаю получать частично решенный счет. Я хочу знать, почему. Как и в моих глазах, этот код работает. И я считаю, что это O (N) время. Спасибо, что посмотрели!
Вот мой код:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int max(int a, int b)
{
if (a > b)
return a;
else return b;
}
int maxSubArray(vector<int> values)
{
int max_so_far = values[0];
int curr_max = values[0];
for(int i = 1; i < values.size(); ++i)
{
curr_max = max(values[i], curr_max + values[i]);
max_so_far = max(max_so_far, curr_max);
}
return max_so_far;
}
int main(int argc, char *argv[])
{
std::vector<vector<int> > Values; //to hold the values of the stock price change
ifstream file(argv[1]);
std::string line; //for the txt file input
int value = 0; //for holding the value of stock change
while (std::getline(file, line))
{
int pos = 0;
if(line.length() == 0)
continue;
else
{
std::istringstream iss(line);
std::vector<int> list; // temporary list of values to be pushed back into the 2-d vector
while (iss >> value)
{
list.push_back(value);
}
Values.push_back(list);
}
}
for(int i = 0; i < Values.size(); ++i)
{
cout << maxSubArray(Values[i]);
cout << endl;
}
/*
cout << " Printing the values : " << endl;
for (int j = 0; j < Values.size(); ++j)
{
for (int k = 0; k < Values[j].size(); ++k)
cout << Values[j][k] << " ";
cout << endl;
}
*/
return 0;
}
Это я, или проблема с оригиналом (CodeEval # 17) составляет почти нулевой смысл? Я даже не могу объединить образец ввода в своем уме, чтобы произвести вывод образца. –
@ ChristopherSchultz Имеет смысл для меня. Например, один, добавьте последовательность, начинающуюся с 2 и заканчивающуюся на 5, чтобы получить 8; например, два, добавьте всю последовательность, чтобы получить 12. –
@ DanielWagner Я вижу это сейчас. Спасибо за подробное объяснение. Я думаю, что исходная проблема, представленная на CodeEval, действительно плохо сформулирована. –