90pts求优化
查看原帖
90pts求优化
392327
段落楼主2023/10/15 10:36

这种写法怎么优化,稍微增加了记忆化,TLE变为WA

#include<bits/stdc++.h>
using namespace std;
int n,a[10][10],x,y,b,ans; 
void dfs(int x,int y,int k,int sum)
{//当前正在准备处理(x,y),是第k次,之前已经获取的和为sum 
	ans=max(ans,sum);
	if(x==n&&y==n&&k==1)
	{
		int t=a[x][y];
		a[x][y]=0;
		dfs(1,1,2,sum+t);
		a[x][y]=t;
		return;
	}
	if(x==n&&y==n&&k==2)return;
	if(x+1<=n)
	{
		int t=a[x][y];
		a[x][y]=0;
		dfs(x+1,y,k,sum+t);
		a[x][y]=t;
	}
	if(y+1<=n)
	{
		int t=a[x][y];
		a[x][y]=0;
		dfs(x,y+1,k,sum+t);
		a[x][y]=t;
	}
	return;
}
int main(){
	cin>>n;
	while(1)
	{
		cin>>x>>y>>b;
		if(x==0&&y==0&&b==0)break;
		a[x][y]=b;
	}
	dfs(1,1,1,0);
	cout<<ans;
	return 0;
}
2023/10/15 10:36
加载中...