72分TLE求助!
查看原帖
72分TLE求助!
918434
loveyouYiCheng楼主2023/3/20 19:18
#include <iostream>
using namespace std;

int n, P[30][30], Q[30][30], vis[30], ans = -1e9;

void dfs(int step)
{
	if( step > n)
	{
		int sum = 0;
		for( int i = 1; i <= n; i++)
			sum += P[i][vis[i]] * Q[vis[i]][i];
		if( ans < sum ) ans = sum ;
		return;
	}
	for(int i = 1;i <= n; i++)
		if(vis[i] == 0)
		{
			vis[i] = step;
			dfs(step + 1);
			vis[i] = 0;
		}
}

int main()
{
	cin >> n;
	for(int i = 1;i <= n; i++)
		for(int j = 1;j <= n; j++)
			cin >> P[i][j];
	for(int i = 1;i <= n; i++)
		for(int j = 1;j <= n; j++)
			cin >> Q[i][j];
	dfs(1);
	cout << ans << endl;
    return 0;
}
2023/3/20 19:18
加载中...