初步测试以下递归算法可行:
int score(int **a, int n, int m)
{

	if (n < 0)
	{
		return 0;
	}

	if (m<0 || m>2)
	{
		return -INF;
	}

	int res = 0;

	int *s = new int[3];
	for (int i = 0; i < 3; i++)
	{
		if (a[n][m] == 0)
		{
			s[i] = -score(a, n - 1, m + i - 1);
		}
		else
		{
			s[i] = a[n][m] + score(a, n - 1, m + i - 1);
		}
	}
	
	res = s[0];
	for (int i = 0; i < 3; i++)
	{
		if (s[i]>res)
		{
			res = s[i];
		}
	}
	
	return res;
}
主函数:
int main()
{
	int n;
	cin >> n;
	int **a = new int*[n];
	for (int i = 0; i < n; i++)
	{
		a[i] = new int[3];
		for (int j = 0; j < 3; j++)
		{
			cin >> a[i][j];
		}
	}

	int *res = new int[3];
	for (int i = 0; i < 3; i++)
	{
		res[i] = score(a, n - 1, i);
	}

	int result = res[0];
	for (int i = 0; i < 3; i++)
	{
		if (res[i]>result)
		{
			result = res[i];
		}
	}


	cout << result << endl;
	
	system("pause");
	return 0;
}