请问思路正确吗?样例也过不了
查看原帖
请问思路正确吗?样例也过不了
173077
William_Wang_楼主2021/8/29 13:57

代码(记忆化搜索)

搜索部分:

int dfs(int i,int j,int num)
{
	if(j==1 ) return num==1?1:0;
	if(f[i][j][num]) return f[i][j][num];
	for(int l=i-1;l>0;l--)
	{
		if(a[l]==b[j-1])
		{
			f[i][j][num]+=dfs(l,j-1,num-1)+dfs(l,j-1,num);
		}
		if(a[l]==b[j])
		{
			f[i][j][num]+=dfs(l,j,num);
		}
	}
	return f[i][j][num];
}

主函数:

for(int i=1;i<=n;i++)
{
	if(a[i]==b[m]) 
	{
		ans+=dfs(i,m,k);
	}
}
2021/8/29 13:57
加载中...