关于两种状态压缩的存储方式的不同之处?
查看原帖
关于两种状态压缩的存储方式的不同之处?
67249
BeingErnest楼主2022/10/21 15:21

我本最早使用了一种状态压缩,仅仅考虑之前到达下一点之前所经历的状态

int p=1<<(i-1),tmpstate;
tmpstate=p|state;
tmpsum=ans[state]+dis;
if(tmpsum<ans[tmpstate])
{
		ans[tmpstate]=tmpsum;
    map[i]=1;
		dfs(k+1,tmpstate,n,i);
    map[i]=0;
}

而我在查看题解后发现,所记录的状态不仅要包括之前所经历的,还有现在的选择

int p=1<<(i-1),tmpstate;
tmpstate=p|state;
tmpsum=ans[state][last]+dis;
if(tmpsum<ans[tmpstate][i])
{
	ans[tmpstate][i]=tmpsum;
	map[i]=1;
	dfs(k+1,tmpstate,n,i);
	map[i]=0;
}

然而第一种状态压缩的错误之处,我无法得知,希望各位能告诉我。

2022/10/21 15:21
加载中...