后缀和优化都过不了???
查看原帖
后缀和优化都过不了???
1014988
liumeihao楼主2024/9/17 17:21

我的剪枝啊!!

第一个样例太“水”了

#include<iostream>
using namespace std;
int n,ans,h[22],p[21][21],q[21][21];
bool vis[21];
void dfs(int step,int sum) {
	if(step>n) {
		ans=max(ans,sum);
		return;
	}
	if(sum+h[step]<ans)return;
	for(int i=1;i<=n;i++){
	    if(vis[i])continue;
		vis[i]=1;
		dfs(step+1,sum+p[step][i]*q[i][step]);
		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];
		}
	}
	for(int i=n;i>=1;i--){
		int tmp=0;
		for(int j=1;j<=n;j++){
			tmp=max(p[i][j]*q[j][i],tmp);
		}
		h[i]=h[i+1]+tmp;
	}
	dfs(1,0);
	cout<<ans;
	return 0;
}
2024/9/17 17:21
加载中...