悬关,求解这种枚举方式为何一定能搜索到最优解
查看原帖
悬关,求解这种枚举方式为何一定能搜索到最优解
1123725
NikoHu_DP楼主2023/12/22 14:13

这个深搜就是求res用 某个数组里的数以乘积形式表示的方案

void dfs(int res,int u,int ret){//u代表数量,res代表当前的值
//	cout<<res<<"res"<<ans<<"\n";
	if(ret+u-1>=ans){
		return ;
	}
	if(res==1){
			st=true;
			ans=min(ret+u-1,ans);
		return ;
	} 
	for(int i=2;i<=87;i++){
		if(res%f[i]==0)
		dfs(res/f[i],u+1,ret+i);
	}
}

上面是我的代码,属于是最朴素的暴力,但感觉肯定不会漏掉某个解。但是TLE了 但是题解里的枚举方式,枚举到一个可整除的因子就一次性用当前数全部除完。这种枚举方式就一定能搜索完整个解空间吗,还是这种枚举方式一定最优

2023/12/22 14:13
加载中...