求助舞倒链优化
查看原帖
求助舞倒链优化
146296
Kagamino_Natsumi楼主2021/7/4 15:58

RT,不知道为什么,DLX中移除与恢复的遍历顺序必须相反,否则会T到飞起,求助各位大佬!

比如这两份代码,第二份比第一份慢了很多倍

	for(int i=d[nowc];i!=nowc;i=d[i]){
		ans[dep]=row[i];
		for(int j=r[i];j!=i;j=r[j])remove(col[j]);
		if(dance(dep+1))return 1;
		for(int j=l[i];j!=i;j=l[j])resume(col[j]);
        //删除与恢复方向相反
	}

	for(int i=d[nowc];i!=nowc;i=d[i]){
		ans[dep]=row[i];
		for(int j=r[i];j!=i;j=r[j])remove(col[j]);
		if(dance(dep+1))return 1;
		for(int j=r[i];j!=i;j=r[j])resume(col[j]);
        //删除与恢复方向相同
	}
2021/7/4 15:58
加载中...