dfs+回溯 - 2n皇后 算法题

2n皇后是 n皇后的拓展,实际上都差不多,只是在放皇后的时候,同时再多放一个不同的皇后。
以下是不同点,完整代码就不搞了,原理和n皇后一样
n皇后传送门

void dfs(int x, int deep)
{
	if (deep == n) {
		t++;
		return;
	}
	for (int i = 0; i < n; i++)
		if (!v1[i]&&mp[x][i]==0)
			if (fun(x, i, 2)) {
				mp[x][i] = 2;
				v1[i] = 1;
				for(int j=0;j<n;j++)
					if (!v2[j] && mp[x][j] == 0)
						if (fun(x, j, 3)) {
							mp[x][j] = 3;
							v2[j] = 1;
							dfs(x + 1, deep + 1);
							mp[x][j] = 0;
							v2[j] = 0;
						}
				mp[x][i] = 0;
				v1[i] = 0;
			}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值