1. 程式人生 > >一個長度為N的陣列中包含正數 負數 0,請實現一個函式找出和為0的最長子數列

一個長度為N的陣列中包含正數 負數 0,請實現一個函式找出和為0的最長子數列

<strong><span style="font-size:18px;">//

#include<iostream>
#include<vector>
using namespace std;
void ZeroLongSet(vector<int> &v)
{
	if (v.empty())
		return;
	int maxdif = 0;
	int temp=0,temp2;
	int start=0, end=0;
	for (size_t i = 0; i != v.size(); ++i)
	{
		temp2 = temp;
		for (size_t j = i; j != v.size(); ++j)
		{
			temp2 = temp2 + v[j];
			if (temp2 == temp)
			{
				if (j - i > maxdif)
				{
					maxdif = j - i;
					start = i ;
					end = j;
				}				
			}
		}
		temp = temp + v[i];
	}	
	if (end != 0)
	{
		for (size_t k = start; k != end+1; ++k)
			cout << v[k] << " ";
	}
}
int main(int argc, char *argv[])
{
	vector<int> v;
	int value;
	while (cin >> value)
	{
		v.push_back(value);
	}
	ZeroLongSet(v);
	system("pause");
	return 0;
}</span></strong>