问题描述
  地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横、坚、斜线位置。
  看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地。各皇后都有自己的势力范围,但也总能找到相安无事的办法。
  所有中国人都知道,皇权神圣,伴君如伴虎,触龙颜者死......
  现在有一个n*n的皇宫,国王占据他所在位置及周围的共9个格子,这些格子皇后不能使用(如果国王在王宫的边上,占用的格子可能不到9个)。当然,皇后也不会攻击国王。
  现在知道了国王的位置(x,y)(国王位于第x行第y列,x,y的起始行和列为1),请问,有多少种方案放置n个皇后,使她们不能互相攻击。
输入格式
  一行,三个整数,皇宫的规模及表示国王的位置
输出格式
  一个整数,表示放置n个皇后的方案数
样例输入 样例输出 数据规模和约定
  n<=

记:

n皇后问题,增加国王位置的条件

仍旧使用dfs实现

AC代码:

 #include <stdio.h>
#define MAX 12 int n;
int map[MAX+][MAX+] = {};
int ans = ; /*初始化*/
void init()
{
int x,y;
scanf("%d %d %d",&n,&x,&y);
map[x][y] = map[x-][y] = map[x+][y] = ;
map[x][y+] = map[x-][y+] = map[x+][y+] = ;
map[x][y-] = map[x-][y-] = map[x+][y-] = ;
return ;
} /*检测该位置是否合法*/
int check(int x,int y)
{
int i;
int x1,y1;
int dir[][] = {{-,-},{-,},{-,},{,-},
{,-},{,},{,},{,},};
for (i = ; i < ; i ++)
{
x1 = x + dir[i][];
y1 = y + dir[i][];
while (x1 > && x1 <= n && y1 > && y1 <= n)
{
if (map[x1][y1] == )
{
return ;
}
x1 += dir[i][];
y1 += dir[i][];
}
}
return ;
} /*搜索合法的放置方法*/
void dfs(int x)
{
int i;
if (x > n)
{
ans ++;
return ;
} /*x当作x轴*/
/*i遍历y轴*/
/*皇后用2标识*/
for (i = ; i <= n ; i ++)
{
if (!map[x][i])
{
if (check(x,i))
{
map[x][i] = ;
dfs(x+);
map[x][i] = ;
}
}
}
return ;
} int main(void)
{
init();
dfs();
printf("%d",ans);
return ;
}

最新文章

  1. react-router 组件式配置与对象式配置小区别
  2. Ubuntu Desktop开发生产环境搭建
  3. 常用的sql语句(找不同位数,找重复)
  4. [Angular 2] Style Angular 2 Components
  5. matlab 和 origin作图去除白边,字体调节
  6. C#调用C++导出类(转)
  7. 单台电脑上启动多个Modelsim图形环境窗口的简单办法(windows)
  8. Node爬虫
  9. 返璞归真 asp.net mvc (3) - Controller/Action
  10. UIScrollView 加载多个view view还可以交换顺序(2)
  11. vim + DoxygenToolkit.vim环境搭建
  12. azure备份虚拟机
  13. XML使用练习
  14. (NO.00005)iOS实现炸弹人游戏(二):素材选择的取舍
  15. Redis 学习目录
  16. c++实现“扫描检测硬件改动”
  17. BroadcastReceiver的使用,动态注册和注销,优先级和中断控制
  18. 多人开发时Git下冲突的产生和解决
  19. 美国谍梦第三至五季/全集The Americans迅雷下载
  20. jsp 页面和 jsp标记

热门文章

  1. 【leetcode】13-Roman2Integer
  2. 利用SIFT进行特征匹配
  3. js的数据类型。
  4. EasyUI 文本框回车和普通回车
  5. C++学习(二十)(C语言部分)之 函数1
  6. Go Example--switch
  7. numpy.array
  8. LG3978 【[TJOI2015]概率论】
  9. ipfs docker 运行试用
  10. 05基于python玩转人工智能最火框架之TensorFlow基础知识