关于写法的疑问
查看原帖
关于写法的疑问
409774
Maysoul楼主2023/8/1 15:17

RT,用类似记搜的形式写的。

有以下两份代码:

int dfs(int l,int r)
{
	if(dp[l][r]!=-INF) return dp[l][r];
	for (int i=l;i<r;i++){
		int a=dfs(l,i),b=dfs(i+1,r);
		if(a==b&&a!=0){
			dp[l][r]=max(dp[l][r],dp[l][i]+1);
			ans=max(ans,dp[l][i]+1);
		}
	}
	return dp[l][r];
}

和

int dfs(int l,int r)
{
	//cout<<l<<" "<<r<<" "<<dp[l][r]<<endl;
	if(dp[l][r]!=-INF) return dp[l][r];
	int ans=0;
	for (int i=l;i<r;i++){
		int a=dfs(l,i),b=dfs(i+1,r);
		if(a==b&&a!=0){
			ans=max(ans,dp[l][i]+1);
		}
	}
	return dp[l][r]=ans;
}

感觉两者之间无非是第一份直接更新dp数组,并无太大差异。

可实际上,第一份8TLE 1WA,第二份AC。

WA的那个点我也不太理解,看讨论区里有说要特判0,我也有特判掉。

想问一下二者有什么区别吗。

2023/8/1 15:17
加载中...