最长和为零的子数组
#include <iostream>
#include <vector>
using namespace std;
void main()
{
vector<int> inputvalue;
int i=0;
int temp = 0;
while (cin >> temp)
{
inputvalue.push_back(temp);
//i++;
temp = cin.get();
if (temp == '\n')
break;
}
int* pa = new int[inputvalue.size()];
//int sum = 0;
for (int i = 0; i < inputvalue.size(); i++)
{
int indnextemp = 0;
int sum = 0;
for (int j = i; j < inputvalue.size() - indnextemp; j++)
{
sum = sum + inputvalue[j];
if (sum == 0)
indnextemp = j - i + 1;
}
pa[i] = indnextemp;
}
int max =0;
int mun = 0;
for (int i = 0; i < inputvalue.size(); i++)
{
if (max < pa[i])
{
max = pa[i];
mun = i;
}
}
for (int i = mun; i < mun + max; i++)
{
cout << inputvalue[i];
if (i!=(mun + max-1))
cout << " ";
}
delete pa;
}