100分WA,求助
查看原帖
100分WA,求助
420583
Thadopz楼主2024/9/10 13:23

最后一个测试点错的

#include <iostream>
#include <vector>
using namespace std;



int main()
{
	
	int num, maxn = 0,ptr=0;
	cin >> num;

	vector<int>arr(num + 5);
	vector<int>sum(num + 5, 0);
	vector<vector<int>>mark(num + 5, vector<int>(num + 5));
	vector<int>path(num + 5);



	for (int i = 1; i <= num; i++)
	{
		cin >> arr[i];
		sum[i] = arr[i];
	}

	for (int i = 1; i <= num; i++)
		for (int j = i + 1; j <= num; j++)
			cin >> mark[i][j];

	for (int i = num - 1; i > 0; i--)//逆推
	{
		for (int j = i + 1; j <= num; j++)
		{
			if (mark[i][j] && sum[j] + arr[i] > sum[i])
			{
				sum[i] = sum[j] + arr[i];
				path[i] = j;
			}
		}
		if (sum[i] > maxn)
		{
			maxn = sum[i];
			ptr = i;
		}
	}
	
	while (path[ptr])
	{
		cout << ptr<< ' ';
		ptr = path[ptr];
	}//回溯
	cout << ptr<<endl;

	cout  << maxn;
	
	return 0;

}
2024/9/10 13:23
加载中...