dogking


私信TA

用户名:uq_56131292783

访问量:820

签 名:

等  级
排  名 7772
经  验 1229
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:就是N皇后问题加了一点限制条件

              因为国王的周围一圈都不能放,所以我们的地图数组从1->n

注意事项:

参考代码:

#include<iostream>

#include<cstdio>

using namespace std;

int mp[20][20],n,col;

bool c[20],dg[20],udg[20];

void dfs(int u){

if(u==n+1){

col++;

return;

}

for(int i=1;i<=n;i++){

if(!c[i]&&!dg[u+i]&&!udg[n-i+u]&&mp[u][i]==0){

c[i]=1;     dg[u+i]=1;

udg[n-i+u]=1; mp[u][i]=1;

dfs(u+1);

c[i]=0;     dg[u+i]=0;

udg[n-i+u]=0; mp[u][i]=0;

}

}

}

int main (){

int a,b;

scanf("%d%d%d",&n,&a,&b);

mp[a][b]=1;mp[a+1][b]=1;mp[a-1][b]=1;mp[a][b+1]=1;mp[a+1][b-1]=1;//标记国王的地盘

mp[a][b-1]=1;mp[a+1][b+1]=1;mp[a-1][b+1]=1;mp[a-1][b-1]=1;

dfs(1);

printf("%d\n",col);

return 0;

}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区